使用OpenSSH安全远程登陆
Thursday February 8, 2007使用OpenSSH安全远程登陆
FreeBSD下使用 OpenSSH。FreeBSD 6.0 默认已经把OpenSSH安装上了,这步可以省略了。OpenSSH是免费软件,可以到 OpenSSH 的主页上http://www.openssh.org 下载。
1.生成密钥对:
使用ssh-keygen来生成密钥对
比如要用DSA加密算法生成一个4096Bit的密钥对可以输入如下命令(具体参数请参阅man ssh-keygen):
具体命令:ssh-keygen -b 4096 -t dsa
使用SecureCRT生成密钥对
SecureCRT最大只支持2048Bit的密钥。生成步骤是点选Tools->Create Public Key…,选择密钥算法和密钥长度,输入完口令后再使劲晃鼠标以给它生成密钥的足够的随机量之后就等待计算机生成密钥对。切记一定要使劲晃鼠标 xD
生成的Key默认放在C:Documents and SettingsAdministratorApplication DataVanDyke下,文件Identity是私钥,文件Identity.pub是公钥。
特别要注意的是由SecureCRT生成的密钥对和用OpenSSH生成的密钥对在格式上不一样,而且二者都只能认识自己的密钥的格式,所以在用 SecureCRT同OpenSSH连接时分别都要用它们自己的密钥格式,可以用任何一个方法生成然后使用ssh-keygen -i 把SecureCRT生成的的密钥转换成OpenSSH的密钥格式,或者用ssh-keygen -e把OpenSSH的密钥格式转换成SecureCRT能够识别的IETF SECSH格式。
具体命令:ssh-keygen -i -f identity.pub > openssh.pubkey
2.密钥分发:
刚才生成了一对密钥,把私钥放在自己的机器上的C:Documents and SettingsAdministratorApplication DataVanDyke目录下。再把生成的公钥放在要连接的远程主机的~/.ssh/目录下并改名为authorized_keys,并且保证文件除了属主外没有被人修改的权限。
想新加用户,只需要把生成的密钥copy到authorized_keys即可
3.配置SSH服务端:
用ee /vi /vim 编辑 /etc/ssh/sshd_config 文件,
PermitRootLogin yes
#允许root login
ChallengeResponseAuthentication no
#关掉key interactive login
4.配置SSH客户端—SecureCRT:
SecureCRT–>SSH2–>Authentication–>PublicKey
重启sshd服务
/etc/rc.d/sshd reload
这样就可以更安全的远程登陆了 XD
感谢maxm耐心的指导
Update:
按照上面的步骤还是不行的话,你先看看authorized_keys的属性是什么
[root@betty] /home# ls -l /root/.ssh/
total 4
-rw-r–r– 1 weeker wheel 2228 Aug 3 16:49 authorized_keys
现在的authorized_keys属于weeker用户,我们要改成root用户才能起作用。
[weeker@betty] ~/.ssh# chown root authorized_keys
sshd_config配置文件说明:
Port 22
“Port”设置sshd监听的端口号。ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。HostKey /etc/ssh/ssh_host_key
“HostKey”设置包含计算机私人密匙的文件。
ServerKeyBits 1024
“ServerKeyBits”定义服务器密匙的位数。LoginGraceTime 600
“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。KeyRegenerationInterval 3600
“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”StrictModes yes
“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。X11Forwarding no
“X11Forwarding”设置是否允许X11转发。PrintMotd yes
“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。RhostsAuthentication no
“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。RhostsRSAAuthentication no
“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。RSAAuthentication yes
“RSAAuthentication”设置是否允许只有RSA安全验证。PasswordAuthentication yes
“PasswordAuthentication”设置是否允许口令验证。PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。AllowUsers admin
“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。

Well said, finally a good report on this stuff