红联Linux门户
Linux帮助

如何使用SSH配置文件进行SSH连接

发布时间:2017-06-15 15:25:22来源:AL0N4k.CoM作者:AL0n4k
SSH配置文件可以方便我们进行一个SSH连接。而不用每次连接的时候都输入账号和密码。
 
不使用配置文件进行连接(使用命令行方式)
那么我们在不使用配置文件的时候(使用命令行的方式)是如何建立连接的呢?
 
用密码登录
输入命令:ssh root@66.111.222.23 -p 27275
 
用密钥登录
输入命令:ssh root@66.111.222.23 -p 27275 -i ~/VPS_SSH_KEY/66.111.222.23.pri
通过-p参数指定端口(默认为22),-i参数手动指定私钥的路径。
~代表用户家目录,如果你电脑用户名为al0n4k
对Windows系统来说,用户家目录的路径就是C:\User\al0n4k\
对Linux系统来说就是/home/al0n4k/
 
使用配置文件方式登录(基于密钥)
上面通过命令行的方式登录,麻烦的地方在于每次都要输入password或者私钥的passphrase,所以这里说一下SSH的配置文件方式来登录。
 
建立目录并创建文件
首先在用户家目录里建立.ssh文件夹(如果没有创建该文件夹),然后在.ssh文件夹里建立一个config文件。
1.Windows系统在新建.ssh文件夹时需要通过cmd命令来新建,在cmd窗口输入mkdir .ssh,然后再在.ssh文件夹中新建config文件。
2.linux系统按照顺序输入下面3个命令:
最后chmod为什么要输入,最下面的注意事项会说。
mkdir ~/.ssh
touch ~/.ssh/config
chmod 600 ~/.ssh/config
 
编辑文件内容
编辑config文件的内容,输入相关的配置:
Host 66.vps
HostName 66.111.222.23
Port 27275
User root
PreferredAuthentications publickey
IdentityFile ~/VPS_SSH_KEY/66.111.222.23.pri
Windows系统用记事本编辑config文件。
Linux系统输入命令vi ~/.ssh/config来进行编辑。
上面的内容做一下说明,具体的配置你按照自己的配置进行替换,config文件中是用Host配置项来进行多个配置的分割。并用缩进符来进行一些子项配置。
Host后面的文本内容可以随意命令,起一个标识作用,用于区分多个Host
HostName用于指定主机地址,可以是域名或者ip地址
Port用于指定主机端口,如果不写这一项默认端口为22
User指定主机的用户名,就是命令ssh root@66.111.222.23@前面的用户名
PreferredAuthentications 指定优先身份认证方式,由于我们是通过公私钥来与服务器进行验证交互,所以这里写publickey就行(默认是按照gssapi-with-mic,hostbased,publickey,keyboard-interactive,password这样的顺序来进行身份验证)
IdentityFile就是指定私钥的路径
 
建立连接
经过这样的配置之后我们就可以使用ssh 66.vps如此简单的命令来连接了。
al0n4k@al0n4k-PC:~$ ssh 66.vps
Enter passphrase for key '~/VPS_SSH_KEY/66.111.222.23.pri': 
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-79-generic x86_64)
* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
*** System restart required ***
root@ubuntu:~# 
这样子是不是简单多了。
 
配置多个Host
我们也可以利用配置文件的方式来配置多个不同提供了SSH连接的主机。
下面是2个Github配置以及一个Coding.net的配置。
Host github1 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/Git_SSH_KEY/github1.pri
Host github2 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/Git_SSH_KEY/github2.pri
Host coding
HostName git.coding.net
User git
PreferredAuthentications publickey
IdentityFile ~/Git_SSH_KEY/coding.pri
输入ssh -T github1测试连接是否成功。
al0n4k@al0n4k-PC:~$ ssh -T github1
Hi AL0N4K! You've successfully authenticated, but GitHub does not provide shell access.
 
注意事项
在Linux中,你的私钥文件,以及.ssh文件夹下的config文件,权限如果过于开放,那么在进行连接的时候会提示你Bad owner or permissions on ~/.ssh/config,目的是提醒你这些重要的文件你不应该对其他人开放较高的权限。解决这一问题的办法很简单。
只需要降低文件权限即可。
输入chmod 600 ~/.ssh/config只给予当前读写权限。
私钥文件的权限也要这样设置。
al0n4k@al0n4k-PC:~$ ls -l .ssh/config ~/Git_SSH_KEY/github.pri
-rw------- 1 al0n4k al0n4k  462 6月  14 00:22 .ssh/config
-rw------- 1 al0n4k al0n4k 1794 6月  11 14:50 ~/Git_SSH_KEY/github.pri
 
相关配置
也许有的人会好奇config文件里都可以配置哪些东西,这里就不描述那么多了,你可以看一下命令手册:http://man.openbsd.org/ssh_config,Linux系统直接man ssh_config
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31505.html