SSH技巧总结
通过密钥连接服务器
生成密钥
在客户端电脑上输入以下指令生成rsa私钥和公钥
ssh-keygen -t rsa -C "[email protected]"生成一对以你的邮箱为标签的密钥
在
/.ssh/文件夹下的id_rsa为密钥文件,id_rsa.pub为公钥文件
在Linux服务器下添加密钥
- 在当前用户的主目录中的
/.ssh/中添加或者修改authorized_keys文件,将刚刚客户端的id_rsa.pub内容复制到authorized_keys中
关闭密码登入,并且只用RSA登入
编辑
sshd_config文件vi /etc/ssh/sshd_config禁用密码验证
将
PasswordAuthentication的注释取消,并修改为PasswordAuthentication no重启SSH服务
注意,重启SSH服务之前建议保留一个会话,以免出现密码登入失败的情况
RHEL/CentOS系统
sudo service sshd restartUbuntu系统
sudo service ssh restart
常用的ssh config参数
建立前的配置
在建立连接的时候,如果是第一次对一个服务器建立连接,经常会问到我们是否信任对方,并且在第一次建立连接之后,如果同一个IP地址后的服务器有过重装,还会因为之前保存的证书而出现连接失败的情况。
因此可以在~/.ssh/config文件中添加以下配置
1 | |
连接服务器
同时,有的时候我们需要频繁访问同一个服务器,反复输入ssh [email protected]是很令人恼火的一件事(即使有的域名或历史记录)。这个时候我们就可以通过在config中添加一个Host来给我们需要的服务器添加一个简单易懂的别名来建立连接
1 | |
假设我们路由器的IP地址是192.168.100.123,那么我们就可以将原本的
1 | |
改为
1 | |
这样ssh就会使用root用户来登入192.168.100.123了
X11窗口转发
对于一些有GUI的Linux系统来说,有的时候我们并不希望远程整个桌面,而是通过SSH来运行部分图形化的程序。在Windows当中,我们可以通过安装VcXsrv来提供一个SSH的转发接口,然后在~/.ssh/config中对应的服务器添加如下参数
1 | |
这样我们在和对应服务器建立连接以后,就可以通过在自己电脑上的cli运行远程服务器中带有GUI
多文件配置
在有的时候ssh需要连接的主机可能很多,放在一个文件里面可能会不便于管理。这个时候我们就可以通过Include关键字,来添加其他的config合并进来。
假设当前我们的.ssh目录的结构如下
1 | |
那么我们就可以在config当中添加Include conf.d/home来实现对于home文件的多文件配置涵盖。参考如下
1 | |
在home当中就可以添加正常的ssh配置了