SSH Cheat Sheet
Cheat Sheet
1、SSH公钥验证:
1 | ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub |
2、SSH公钥上传:
1 | ssh-copy-id -i "$HOME/.ssh/id_rsa.pub" user@host |
不过这个不适合Windows(无论是客户端还是服务器),Windows还是手动将客户端id_rsa.pub
的内容追加到authorized_keys
里。
如果你是在Linux服务器上手动新建的.ssh
文件夹和authorized_keys
文件,那么请记得在服务端运行以下命令:
1 | mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
有些时候(比如在CentOS上),权限如果过于宽松,反而会造成密钥登录失败。
3、SSH本机代理转发:
1 | ssh -R 7890:localhost:7890 -N remote-host |
然后在远程主机上:
1 | export http_proxy='http://127.0.0.1:7890' |
SSH公钥验证
当我们第一次连接到某个SSH服务器时,往往会出现以下提示:
这部分的意思是:你第一次连接到这个SSH服务器,这是服务器公钥的指纹(因为完整的公钥可能会非常长),请验证下是否正确。如果一致,说明这个SSH链接是安全的,可以防止中间人的攻击。
这里可以看到,给的是ED25519的公钥,指纹算法用的是SHA256。最关键的是后面这一串字符。
那么,怎么确认呢?首先你得找一个肯定已经安全的方式连上此台主机:
- 物理接触,最佳最简单
- 如果是租借的云主机,可以从网页上连接到主机上
连上以后,cd
到存放SSH公钥文件的文件夹,然后执行以下命令:
1 | ssh-keygen -l -f <公钥文件> |
默认情况下,Linux服务器的公钥文件应该存储在/etc/ssh
中,在其中,我们重点关注的是名字中带ed25519
和.pub
的公钥文件,使用上面的命令进行计算。
可以看到,公钥的指纹是一致的,此时我们便可以放心地连接到此SSH服务器了。
Windows服务器的则是在%PROGRAMDATA%\ssh
,另外需要管理员权限才能访问: