本文参考SSH原理与应用(阮一峰), 同主目录多用户通过ssh进行密钥登陆
一、概述
ssh是建立在传输层和应用层上的用于计算机间的加密通信协议,主要用于远程登录及其他远程通信。ssh有多种实现形式,如openssh,putty等。本文以openssh为例。
二、ssh远程登录的两种验证方式
1.密码方式
原理:依靠账号密码登录,所有传输数据均被加密。过程如是,客户端通过ssh协议申请访问远程主机,远程主机将公钥发送给客户端主机,要求其用公钥加密所输入密码,发送给远程主机用私钥解密进行验证,如果正确,则客户端主机可以登录远程主机。难以避免“中间人”攻击。
【例】
[root@A ~]# ssh 198.160.0.3 // ssh -p 2222 198.160.0.3
Warning: Permanently added '198.160.0.3' (RSA) to the list of known hosts.
root@198.160.0.3's password: //输入密码
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Mon Mar 18 19:57:16 2013 from 198.160.0.5
[root@B ~]#
2.密钥方式(无密码登录)
步骤一客户端主机A
198.160.0.5[root@A ~]# ssh-keygen -t rsa -P "" // -P "" 表示无密码登录,也可以不使用这个选项,一路回车即可
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
//默认的文件名为id_rsa
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
b9:96:e7:fc:ee:bf:de:a4:b2:da:74:33:82:0f:71:df root@A
[root@A ~]# cd ~/.ssh && ls
authorized_keys id_rsa id_rsa.pub known_hosts
[root@A .ssh]# scp id_rsa.pub root@198.160.0.3 :~/.ssh
root@198.160.0.3's password:
// 需输入密码,无密码登录尚未配置成功
id_rsa.pub 100% 403 0.4KB/s 00:00
[root@A .ssh]#
步骤二远程主机B198.160.0.3
[root@B ~]# cd .ssh
[root@B .ssh]# cat id_rsa.pub >> authorized_keys
步骤三客户端主机A198.160.0.5
[root@A ~]# cd .ssh
[root@A .ssh]# ssh root@198.160.0.3
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Mar 19 18:50:30 2013 from 198.160.0.5
Rocks 6.0 (Mamba)
Profile built 01:10 14-Sep-2012
Kickstarted 18:31 13-Sep-2012
[root@B ~]# //成功了!
备注 :希望在客户端主机A用不同的密钥登录其他主机C(198.160.0.4)时,可在A生成新的密钥对(为了不影响与B的通信,记得改名,例如,toC,toC.pub),重复上述过程,在A处登录C时用“ssh -i toC root@198.160.0.4" 指定密钥登录即可。
若A,B,C完全互相信任,好到可以穿一条裤子,那就可以只用一对密钥搞定一切,即在某一台主机上生成一对密钥(id_rsa,id_rsa.pub),并将公钥内容添加到authorized_keys文件中,将上面提到的三个文件拷贝放到其余两台主机的~/.ssh目录下即可。如果主机还有其他关系网,还是别这么干了!
三、我遇到的问题
1. ssh 修改默认端口
背景:因某些原因,服务器上的SSH端口非22,在访问正常配置的机器时,总要用-p,一些间接使用SSH的服务,使用起来就更麻烦了。所以希望改回原来的默认端口22需要修改的文件有 /etc/ssh/sshd_config (改为Port 22), /etc/sysconfig/iptables(过滤SSH 若指定了端口 改为22) ,/etc/services (改为ssh 22/tcp ssh 22/udp)然后重启ssh : service sshd restart