最近实训的实验室使用了一批新的服务器,给成员分了一张1080 GTX的显卡来进行深度学习训练。单机有4张卡,4个人一组,每人使用一张。服务器一般都没有图形化界面。加上自己之前所使用的digitalocean和阿里云的云服务器,自己有了比较多的服务器要进行连接。如果每次都使用ssh user@hostname -i id_rsa
来指定私钥与服务器上的公钥进行连接太过麻烦了,以及在后面会经常使用到scp
每次都要指定私钥或者输入用户密码也比较麻烦,所以这里就记录一下如何配置ssh config来方便我们管理多个ssh连接。
创建RSA密钥对
1 | ssh-keygen -t rsa # 创建RSA密钥对 |
2 | cat id_rsa.pub >> ~/.ssh/authorized_keys #将公钥追加到服务器的ssh认证文件中 |
3 | \$ chmod 600 ~/.ssh/authorized_keys #将ssh认证文件权限设置为只有自己可以读写 |
4 | \$ chmod 700 ~/.ssh #将~/.ssh目录设置权限为只有自己可以访问 |
chmod的八进制语法可以参考维基百科chmod
在创建完成之后,将通过
1 | scp user@hostname private_key ~/.ssh |
拷贝到自己电脑的.ssh
目录下,之后记得从服务器删除掉私钥。
配置config
对.ssh/config
进行配置
1 | Host host # host |
2 | HostName server_ip # 服务器的IP地址 |
3 | Port 22 # ssh默认端口22 |
4 | User user # 服务器的用户名 |
5 | IdentityFile ~/.ssh/id_rsa # 所使用的私钥 |
配置完成之后,就可以直接使用ssh host
的方式来进行访问了。
1 | $ ssh host |
2 | Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.2.0-27-generic x86_64) |
3 | ... |
使用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 |
在配置完成之后可以考虑将用户的密码设置为一个比较复杂的密码,或者禁用密码进行登录,如果禁用密码登录的话就要小心私钥丢失的问题了。