SSH 免密远程登录
文章目录
缘起
平时实验需要在 HPC 上进行一些计算,而那些比较占空间的结果则会存储在 lab server 上。照理说,在这三处转移数据,使用 rsync
命令的话,应该是十分方便快捷的。然而由于总是不能成功设置密钥,这些愉快的操作总是会被密码输入框打断。今天仔细研究了一下这个问题,终于可以成功进行免密远程登录了。
步骤
在本机生成公私密钥
在本机使用
ssh-keygen
于~\.ssh
生成公私密钥对id_rsa
与id_rsa.pub
1
$ ssh-keygen -t rsa
如若后续步骤出错,建议将权限设置为
1 2 3 4
$ chmod 755 ~/ $ chmod 755 ~/.ssh/ $ chmod 600 ~/.ssh/id_rsa $ chmod 644 ~/.ssh/id_rsa.pub
将公钥添加至 server 并添加入
authorized_keys
有两个方法,一是使用
ssh-copy-id
命令1
$ ssh-copy-id -p 22 username@hostname
可使用
brew install ssh-copy-id
来安装此偷懒命令二是手动将公钥复制到 server
1
$ scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/
并登录远程主机,将公钥添加至
authorized_keys
1
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果遇到
Permission denied
,可登录 server,确认自己拥有 execute permission 并移除 group 与 others 的权限1
$ chmod 600 ~/.ssh/
如果还是需要输入密码,可修改 server 上的公钥权限
1
$ chmod 600 ~/.ssh/authorized_keys
在本机配置偷懒简写
1
$ vi ~/.ssh/config
1 2 3 4 5
Host shortname User username HostName hostname Port 22 IdentityFile ~/.ssh/id_rsa
心得
对于免密登录来说,顺利的话可能只需要使用
ssh-keygen
和ssh-copy-id
命令并修改配置文件。然而权限设定十分 tricky,稍有不慎便会像自己之前一样或添加公钥失败或设置完了还得输密码。
文章作者 ziyunch
上次更新 2018-10-01