周海汉 /文
2010.3.31
ablozhou # gmail.com
概述
因为要管理数十台linux服务器,经常用ssh连接。苦恼的是每次ssh连接时都要输一半天命令,类似:
ssh -p 2345 user@123.123.222.222
password:
能否简短快捷一点呢?
ssh快捷配置
其实可以在自己用户名下配置.ssh/config
如下:
- Host centdev
- HostName 192.168.12.12
- Port 2345
- User zhouhh
- Host fc5dev
- HostName 192.168.12.13
- Port 4567
- User zhouhh
- Host svn
- HostName 192.168.12.23
- User root
此时,如果想访问centdev,原来需要
ssh -p 2345 zhouhh@centdev (配置hosts)
或
ssh -p 2345 zhouhh@192.168.12.12
现在只需用ssh centdev就可以了。
但是还需要输入密码。结合以前我写的《用密钥登录linux服务器 》,设置密钥,可以连密码都省了。 省略输入用户名密码
先生成密钥
zhouhh@zhh64:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zhouhh/.ssh/id_rsa):
/home/zhouhh/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/zhouhh/.ssh/id_rsa.
Your public key has been saved in /home/zhouhh/.ssh/id_rsa.pub.
The key fingerprint is:
69:97:a3:e7:f0:8c:95:99:ac:8e:eb:6f:61:d1:14:dc zhouhh@zhh64
The key’s randomart image is:
+–[ RSA 2048]—-+
| ..o |
| o E |
| o |
| …. |
| S.+ |
| .o+ = |
| .o.B |
| ..X |
| .+== + |
+—————–+
密钥文件的密码选择空。
此时,可以看到.ssh里面有如下文件:
zhouhh@zhh64:~$ ls .ssh
config id_rsa id_rsa.pub known_hosts
其中id_rsa是私钥,id_rsa.pub是公钥。
配置目标机器
在目标机器,需编辑/etc/ssh/sshd_config
确认如下选项
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/pub_keys
或
AuthorizedKeysFile ~/.ssh/pub_keys
如用户名下不存在.ssh目录,需创建,并修改属性为700.
将.ssh里面的id_rsa.pub改名为pub_keys
重启sshd
[zhouhh@svnserv ~]$ ls .ssh
ls: .ssh: 没有那个文件或目录
[zhouhh@svnserv ~]$ mkdir .ssh
[zhouhh@svnserv ~]$ cd .ssh
[zhouhh@svnserv .ssh]$ ls
id_rsa.pub
[zhouhh@svnserv .ssh]$ cp id_rsa.pub pub_keys
[zhouhh@svnserv .ssh]$ ls -l
总计 16
-rw-r–r– 1 zhouhh zhouhh 394 04-01 10:13 id_rsa.pub
-rw-r–r– 1 zhouhh zhouhh 394 04-01 10:14 pub_keys
[zhouhh@svnserv .ssh]$ cd ..
[zhouhh@svnserv ~]$ chmod 700 .ssh
[root@svnserv ~]# service sshd restart
停止 sshd: [确定]
启动 sshd: [确定]
拷贝公钥
需将公钥拷贝到目标机器。
zhouhh@zhh64:~/.ssh$ scp id_rsa.pub zhouhh@svn:~/.ssh/.
zhouhh@192.168.12.232’s password:
id_rsa.pub 100% 394 0.4KB/s 00:00
此时,用如下命令无须密码即可进入:
zhouhh@zhh64:~$ ssh zhouhh@svn
[zhouhh@svnserv ~]$
配置本地使用私钥
再编辑本地的.ssh/config
[zhouhh@svnserv ~]$ exit
logout
Connection to 192.168.12.232 closed.
zhouhh@zhh64:~$ vi .ssh/config
修改其配置文件:
Host svn
HostName 192.168.12.232
User zhouhh
PreferredAuthentications publickey
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa
注意 IdentityFile,填写本地私钥文件地址。
此时,只需ssh svn就可以直接访问目标地址了,无须输入用户名密码。
zhouhh@zhh64:~$ ssh svn
Last login: Thu Apr 1 10:16:27 2010 from 192.168.11.116
[zhouhh@svnserv ~]$
总结
经过如上的配置,对那些维护机器量很大的或经常需要ssh登入登出的人,至少在登录这一关,一劳永逸了。
参考:
http://sial.org/howto/openssh/publickey-auth/
http://linuxtoy.org/archives/ssh-tip-creating-shortcut.html
用密钥登录linux服务器
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源