SSH 免密码登录

有同事问我,如何不用密码登录 SSH,让我想起了我这一路的 SSH 登录方式变更。

一、最开始,我也是老老实实的输入密码。

ssh root@dev.markjour.com

顺便说一句 ssh 有一个 -p 参数,可以用来指定端口,默认值 22。

二、后来知道了使用密钥对登录。

生成公钥、私钥:

ssh-keygen -t rsa

~/.ssh/config 中配置:

Host dev.markjour.com
User root
IdentityFile "~/.ssh/id_rsa"

如果是本地就直接 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

要是远程就 SSH 登录进去,修改之。

再后来又知道了一个工具 ssh-copy-id 可以方便的用来传递公钥。

ssh-copy-id -i ~/.ssh/id_rsa root@dev.markjour.com

顺便提一句:SSH 有安全策略,~/.ssh 权限应当设置是 700,~/.ssh/authorized_keys 的权限设置应该是 600。

三、sshpass 的时代。

sshpass 就是起到帮你输入密码的作用,不影响 ssh 的使用。

定义函数和别名:

function jj () {
    sshpass -p '123456' ssh root@$1 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
}
alias logindev="jj dev.markjour.com" 

至于参数的作用,自己找“人”(man)问问吧。