当前位置: > Linux服务器 > SSH >

SSH 密钥登录linux、freebsd

时间:2016-02-23 15:46来源:linux.it.net.cn 作者:IT
启用密钥ssh登陆服务器:
 
首先得生成一对密钥,一把私有密钥和一把公用密钥,公用密钥用于对消息进行加密,只有拥有私有密钥的人才能对该消息进行解密。把公钥放到我们要远程登录的主机(remote)上(~/.ssh/authorized_keys),专用密钥放置到本地机(local)或是U盘。
 
认证过程中,romote接收到local的登录请求后,romote的sshd 会生成一个随机数,并用我们先前拷贝过去的公用密钥对这个随机数进行加密,然后,sshd把加密了的随机数发回给正在local上运行的ssh程序,然后是local计算机对该随机数的解密,再发回给romote,通过后,romote则允许local登录了。
 
以SSHSecureShellClient-3.2.9为例
首先我们创建属于你自己的公钥和私钥:
(1)SSH Secure Shell的Edit菜单àSetting菜单,找到Keys,然后Generate New..开始生成新密钥;
(2)下一步(全部默认即可),选择DSA吧(RSA也可以,但RSA和DSA差不多,DSA耗资源少点,其实这点资源消耗可以忽略不计);
(3)下一步,File,取个文件名:zx-ssh,别的可以不填直接点“完成”,Passphrase写了则每次连接时需要输入,我喜欢连密码都不输;为了实现自动登录,passphrase为空,但这样不安全,还是设置一个passphrase吧,如果你的ssh secure shell界面不关闭,输入一是passphrase就可以一直好用的,有passphrase可以防止私钥被人盗用;
(4)找到密钥存放的目录:我是windows7,在C:\Users\ZX\AppData\Roaming\SSH\UserKeys,有2个文件:zx-ssh(私钥,与公钥一起存放到本地或复制到U盘,在没有使用该过密钥的机器上要访问服务器,则需要导入密钥:SSH Secure Shell的Edit菜单àSetting菜单,找到Keys,然后Import导入,往往在Import是,要求你输入的是公钥文件名,没关系,导入公钥则私钥也导入成功,在配置文件夹中会自动生成2个文件,就是导入的公钥和私钥;zx-ssh.pub(公钥,上传到服务器用户主目录中,等待转换格式,需要转换为openssh格式才可以被服务器识别);到此为止,windows这边已经准备好了。
(5)服务器端(我以freebsd为例),修改配置文件:vi/etc/ssh/sshd-config
启用ChallengeResponseAuthentication no #启用此项才可以真正取消密码验证
启用UsePAM yes
(6)将生产的公钥(zx-ssh.pub),上传到服务器用户主目录(自己想办法传),复制到用户主目录下的.ssh目录中,然后进行格式转换(转换为openssl格式):
cd /usr/home/用户主目录/.ssh/
  ssh-keygen -X -f zx-ssh.pub>>.ssh/authorized_keys #转换格式openss格式,并将公钥导入到authorized_keys文件中
  chmod 0640 authorized_keys#设置权限,使该文件仅允许属主读写
rm zx-ssh.pub#删除上传的公钥,要不然留住也没用
这里要注意一个问题,就是这个linux主机如果有多个公钥,要注意每个公钥后面需要有个回车或是换行,不能将多个公钥直接罗列在一行。
应该重新检查一下你的authorized_keys的权限(640)。也可能要检查.ssh目录的权限,.ssh目录应该对“组用户”(group)和“其它用户”(other)没有写的权限。运行下面的命令来取消“组用户”(group)和“其它用户”(other)对于.ssh目录的写权限(740):chmod go-w ~/.ssh(也可以chmod 740 ~/.ssh,一样的)
 
搞定了!在我的/etc/ssh/sshd-config中共4条:
PermitRootLogin yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
Subsystemsftp/usr/libexec/sftp-server
 
以SecureCRT_SFX 6.61(目前网上最新版)为例,首先是创建自己的公钥和私钥:
(1)secureCRT软件的获得,securecrt 和 securesfx一个是ssh一个是scp,这两个软件是联动的,在其主页www.vandyke.com上scrt_sfx661-x86.exe包含这2款软件(在crackteam.ws网站上可以找到注册程序,你在网上也可以很好找到汉化版,这样不好呀!强烈建议购买正版软件)。
(2)首先是创建自己的公钥和私钥:
运行SecureCRT,工具à创建公钥à采用DSA类型àPassphrase可以不写,但我愿意每次登陆时输入这个,因为有这个Passphrase则私钥被人偷走也不怕àKey length 我改成2048(长点安全点)à注意存放目录和格式,请选择OpenSSH Key format格式,这样可以兼容大多数的linux、freebsd服务器,记住存放目录à完成
(3)这样在存储目录找到2个文件,以我的为例:ZX_Identity(私钥),ZX_Identity.pub(公钥),私钥自己留好,或复制到U盘,以备急需,公钥直接传输到你的Unix、linux、freebsd服务器上的~/.ssh目录(用户主目录下的.ssh目录),并执行cat ZX_Identity.pub >> ~/.ssh/authorized_keys将公钥密文追加到认证文件中,这里要注意一个问题,就是同一个用户名(假设是root),现在要设置多个公钥,那么在利用cat追加某个公钥之前,一定要先vi ~/.ssh/authorized_keys看一下原有公钥后面是否有回车,要确保新追加进来的公钥没有直接连在其他公钥的行尾,新密钥一定要在新的一行,否则,这些公钥没有分开,就不好用了。注意.ssh目录的权限:chmod 740 ~/.ssh; chmod 640 ~/.ssh/authorized_keys;
(4)linux/freebsd等ssh服务器端密钥登录配置:
我以freebsd为例),修改/etc/ssh/sshd-config,
启用ChallengeResponseAuthentication no #启用此项才可以真正取消密码验证
启用UsePAM yes
重启sshd服务:/etc/rc.d/sshd restart
一切都OK了!
 
如果更换电脑,需要导入私钥,很简单,在创建连接的时候,选择SSH2的PblicKey,在其Properties中导入即可。


(责任编辑:IT)
------分隔线----------------------------