我已经在 Windows 7 中安装了 OpenSSH 7.6 以进行测试。SSH 客户端和服务器工作正常,直到我尝试从此窗口访问我的 AWS EC2 盒之一。
看来我需要更改私钥文件的权限。这可以通过chmod命令在 unix/linux 上轻松完成。
窗户呢?
private-key.ppm 是直接从 AWS 复制的,我猜也是这个权限。
C:\>ssh -V
OpenSSH_7.6p1, LibreSSL 2.5.3
C:\>ver
Microsoft Windows [Version 6.1.7601]
C:\>
C:\>ssh ubuntu@192.168.0.1 -i private-key.ppk
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'private-key.ppk' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "private-key.ppk": bad permissions
ubuntu@192.168.0.1: Permission denied (publickey).
C:\> …Run Code Online (Sandbox Code Playgroud) 回到这个问题,我正在通过 OpenSSH (Client: Mac OS X 10.6 | Server: Linux Mint) 执行以下操作,但是被隧道连接的端口没有公开工作:
ssh -R 8080:localhost:80 -N root@example.com
Run Code Online (Sandbox Code Playgroud)
localhost,而不是所有接口上localhost在远程计算机上打开端口时它可以工作,但是当尝试从我的本地计算机访问远程计算机的公共 IP 时,该端口似乎没有打开我如何在 IP 上公开隧道供任何人访问?
在过去的几周里,我构建了几个虚拟机。问题是,这.ssh/known_hosts给了我中间人警告。发生这种情况是因为另一个指纹与虚拟机 IP 相关联。
.ssh/known_hosts但是,在文件中,我没有找到与 IP 相关的记录,只有两个奇怪的类似密钥的字符串和“ssh-rsa”。
有没有人对如何从中删除旧密钥有任何想法known_hosts?
如果重要:
我希望一个 SSH 配置文件包含另一个。用例是在我的默认.ssh/config文件中定义我想要的任何内容,然后在单独的文件(例如~/.ssh/foo.config)中预先添加一些额外的东西。不过,我希望第二个文件包含第一个文件,因此我不必复制第一个文件中的所有内容。那可行吗?谢谢!
当连接到一个新的/未知的服务器(使用最近的 OpenSSH)时,例如:
ssh example.com
Run Code Online (Sandbox Code Playgroud)
您将获得如下指纹:
The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
但是,通常以这种形式为服务器提供指纹:
f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5
Run Code Online (Sandbox Code Playgroud)
如何检查真实性(不打扰服务器管理员提供 SHA256 指纹)?
随着ssh -i <private key filename>您可以指示ssh来使用额外的私钥来尝试验证。
文档并不清楚如何明确使用该密钥。
有没有办法ssh输出它支持的 MAC、密码和 KexAlgorithms?
我想动态查找,而不必查看源代码。
openssh 似乎改变了它显示关键指纹的方式。
我正在尝试从客户端机器 ssh 到服务器:
客户端将服务器密钥的 md5 哈希报告为 16 对十六进制数字的序列,如下所示:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
服务器默认使用 sha256 哈希,但由于这个答案,我可以通过运行强制它提供 sha1 哈希:
[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub
我希望结果如下所示:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
但我得到了这个:
256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI root@host.local (ECDSA)
在我看来,现在显示的是指纹的 base64 编码版本,而不是十六进制数字。
如何以与(旧)客户端报告的格式(冒号分隔的十六进制数字,sha1 哈希)相同的格式获取服务器密钥的校验和,以检查它们是否相同?
编辑: 旧版本的 SSH 提供md5校验和,而不是我错误地认为的 sha1 校验和。在 -E 选项中使用该校验和(正如现在接受的答案应该说明的那样)可提供所需的输出。
在 ssh-keygen 生成的公钥文件“id_rsa.pub”中,==后面的部分重要吗?
我问是因为当我将“root@somedomain.com”更改为“root”时,它似乎仍然有效。
更一般地说,我很好奇那一半的目的是什么。
昨天我可以使用今天使用的完全相同的凭据成功通过 SSH 连接到我的机器。该机器正在运行CentOS 6.3。但是现在由于某种原因,它拒绝了我的许可。
这是我的-v打印输出sshd_config和ssh_config文件。
$ ssh -vg -L 3333:localhost:6666 misfitred@devilsmilk
OpenSSH_6.1p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to devilsmilk [10.0.10.113] port 22.
debug1: Connection established.
debug1: identity file /home/kgraves/.ssh/id_rsa type -1
debug1: identity file /home/kgraves/.ssh/id_rsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_dsa type -1
debug1: identity file /home/kgraves/.ssh/id_dsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version …Run Code Online (Sandbox Code Playgroud) openssh ×10
ssh ×10
permissions ×2
private-key ×2
centos ×1
freebsd ×1
hosts ×1
linux ×1
pgp ×1
ssh-tunnel ×1
windows ×1