ssh config配置

最近实训的实验室使用了一批新的服务器,给成员分了一张1080 GTX的显卡来进行深度学习训练。单机有4张卡,4个人一组,每人使用一张。服务器一般都没有图形化界面。加上自己之前所使用的digitalocean和阿里云的云服务器,自己有了比较多的服务器要进行连接。如果每次都使用ssh user@hostname -i id_rsa来指定私钥与服务器上的公钥进行连接太过麻烦了,以及在后面会经常使用到scp每次都要指定私钥或者输入用户密码也比较麻烦,所以这里就记录一下如何配置ssh config来方便我们管理多个ssh连接。

创建RSA密钥对

1
2
3
4
$ ssh-keygen -t rsa # 创建RSA密钥对
$ cat id_rsa.pub >> ~/.ssh/authorized_keys #将公钥追加到服务器的ssh认证文件中
\$ chmod 600 ~/.ssh/authorized_keys #将ssh认证文件权限设置为只有自己可以读写
\$ chmod 700 ~/.ssh #将~/.ssh目录设置权限为只有自己可以访问

chmod的八进制语法可以参考维基百科chmod

在创建完成之后,将通过

1
$ scp user@hostname private_key ~/.ssh

拷贝到自己电脑的.ssh 目录下,之后记得从服务器删除掉私钥。

配置config

.ssh/config进行配置

1
2
3
4
5
Host host # host
HostName server_ip # 服务器的IP地址
Port 22 # ssh默认端口22
User user # 服务器的用户名
IdentityFile ~/.ssh/id_rsa # 所使用的私钥

配置完成之后,就可以直接使用ssh host的方式来进行访问了。

1
2
3
$ ssh host
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.2.0-27-generic x86_64)
...

使用scp的话,直接使用

1
$ scp host:source_dir/file dest_dir

就可以将目标目录source_dir下的文件file拷贝到我们的dest_dir目录下了
等同于

1
$ scp user@server_ip source_dir/file dest_dir -i .ssh/id_rsa_file

在配置完成之后可以考虑将用户的密码设置为一个比较复杂的密码,或者禁用密码进行登录,如果禁用密码登录的话就要小心私钥丢失的问题了。

参考

~/.ssh/config的配置

您的支持将鼓励我继续创作!