生成密钥对
使用ssh-keygen来生成密钥对,比如要用DSA加密算法生成一个4096Bit的密钥对可以输入如下命令(具体参数请参阅man ssh-keygen):
#ssh-keygen -b 4096 -t dsa |
%ssh-keygen -b 4096 -t dsa |
Generating public/private dsa key pair. Enter file in which to save the key (/home/fdy84/.ssh/id_dsa): |
(密钥对将要存的路径,括号内为默认) Created directory '/home/fdy84/.ssh'. Enter passphrase (empty for no passphrase): (输入口令) Enter same passphrase again: (再次输入口令,千万不要忘记否则就只有从新生成密钥了) Your identification has been saved in /home/fdy84/.ssh/id_dsa. (你的私钥) Your public key has been saved in /home/fdy84/.ssh/id_dsa.pub. (你的公钥) The key fingerprint is: bb:1b:f5:1c:77:62:90:21:59:7e:c6:65:e5:24:c6:e5 fdy84@freebsd
|
密钥分发
刚才生成了一对密钥,把私钥放在自己的机器上的~/.ssh/目录下并保证访问权限是“-rw-------”(即600)。再把生成的公钥放在要连接的远程主机的~/.ssh/目录下并改名为authorized_keys,并且保证文件除了属主外没有被人修改的权限。
4.配置使用SSH
配置服务端
启动SSH服务端很简单只需要运行
# sshd |
就可以了。或者在/etc/rc.conf中加入
sshd_enable="YES"
就可以在每次启动时自动运行SSH服务端了。
SSH服务端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服务器配置文件均为此文件。
配置客户端
客户端想连接远程服务器只需要输入
#ssh 域名(或ip)
就可以了
比如想以fdy84用户连接IP地址为192.168.0.6的一台远程服务器 需要键入
# ssh 192.168.0.6 -l fdy84 |
1.使用SecureCRT创建私钥和公钥.
SecureCRT: Quick Connect -> Authentiation -> Public Key -> Properties -> Create Identity File -> DSA/RSA -> Set Passphrase -> Done
这个时候在指定目录会生成两个文件,例如,私钥my_rsa和公钥my_rsa.pub
2.linux服务器上建立.ssh目录,一般情况下,已经有这个目录
# mkdir /root/.ssh
# chmod 700 /root/.ssh
3.将公钥 my_rsa.pub 传到linux服务器,将SSH2兼容格式的公钥转换成为Openssh兼容格式
# ssh-keygen -i -f Identity.pub >> /root/.ssh/authorized_keys2
# chmod 600 /root/.ssh/authorized_keys2
4.在SecureCRT里面设置登录模式为PublicKey,并选择刚刚创建的my_rsa文件作为私钥
5.重启Linux服务器上SSH服务器
#service sshd restart 或者 /etc/rc.d/init.d/sshd restart
6.由于已经设置了密钥登录,原来的密码登录就完全可以去掉
# vi /etc/ssh/sshd_config
Protocol 2 /仅允许使用SSH2
PubkeyAuthentication yes /*启用PublicKey认证
AuthorizedKeysFile .ssh/authorized_keys2 /*PublicKey文件路径
PasswordAuthentication no /*禁止密码验证登录
PS:以上步骤是使用SecureCRT生成的密钥对来进行登录验证的,其实也可以在服务器上使用ssh-keygen命令生成的密钥,同样在生成密钥对之后,将格式转换成SecureCRT 使用的SSH2格式
陈绪:步骤3中的转换key格式易于为大家忽略,请多注意此点。
特别要注意的是由SecureCRT生成的密钥对和用OpenSSH生成的密钥对在格式上不一样,而且二者都只能认识自己的密钥的格式,所以在用SecureCRT同OpenSSH连接时分别都要用它们自己的密钥格式,可以用任何一个方法生成然后使用ssh-keygen -i 把SecureCRT生成的的密钥转换成OpenSSH的密钥格式,或者用ssh-keygen -e把OpenSSH的密钥格式转换成SecureCRT能够识别的IETF SECSH格式。
虽然SSH提供基于密码的登陆,不过基于安全考虑笔者并不推荐使用这种登陆,鉴于现在机器的速度普遍已经很快,推荐使用4096位的密钥以加强安全性。