分类: LINUX
2014-02-25 13:48:02
SSH登录linux相关
SSH作为一种网络协议,用来实现两台机器间的安全交流,比如实现远程登录和文件传输。SSH协议使用了客户机/服务器模式,就是说一台主机作为SSH服务器,另一台主机作为SSH客户机。你要连接的机器需要开启SSH服务。另外,SSH协议提供了两种安全级别:
级别1 仅使用用户名和密码来登录远程的SSH服务器,传输的数据是加密的。在这种情况下,仍有可能会有别的主机假冒所要登录的主机。
级别2 使用公钥和密钥,避免了级别1所面临的安全问题。
注:SSH仅是一种网络协议,用户需要使用实现了SSH协议的程序来进行远程登录,文件传输,或者其他任务。在Unix/Linux上,可以使用ssh命令(程序)来登录远程主机,使用scp命令在两台主机间安全地传递文件;在Windows上,可以使用PuTTY程序来登录远程主机。
ssh-keygen 用于为 ssh(1)生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥
ssh-keygen
-t rsa -C “comment” -f ~/.ssh/mykey
会在~/.ssh/目录下生成mykey.pub(公钥)和mykey(私钥)两个文件
参数:
-t type指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)
-C comment提供一个注释
-f filename指定密钥文件名(不指定时默认:rsa1为identity identity.pub,rsa为id_rsa id_rsa.pub,dsa为id_dsa id_dsa.pub)
其他参数man ssh-keygen
主机C登录主机S不需要输入密码的方法:
将公钥文件(如 ~/.ssh/id_rsa.pub)里的内容添加到主机S到.ssh/authorized_keys文件(ssh-copy-id -i ~/.ssh/id_rsa.pub user@host_C)
修改主机S到.ssh/authorized_keys文件权限为600 (chmod 600 .ssh/authorized_keys)
主机C登录主机S (ssh -p 22 )
注:链接成功后,主机C的.ssh/known_hosts会有链接记录(远程主机公钥)
可以在~/.ssh目录下创建如下的配置文件config (vi ~/.ssh/config)
Host 224
User fussfuss1 #远程主机上的用户名
Port 22 #ssh端口
Hostname 192.168.4.224 #要链接主机的地址
IdentityFile ~/.ssh/id_rsa #指定私钥文件(公钥已添加到远程主机的.ssh/authorized_keys )
这样直接ssh 224 即可不需要密码直接链接到IP为192.168.4.224远程主机
Q: SSH登录过程?
A: 整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
Q:使用公钥和密钥,一台主机X想登陆远程主机R,那么远程主机R何如确定主机X确实为主机L呢?
A:远程主机R 的 sshd 会生成一个随机数,并用主机L先前拷贝过去的公用密钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在主机X上运行的 ssh。接下来,主机X的 ssh 用密钥对这个随机数进行解密后,再把它发回给远程主机R。如果结果相匹配,那么实际上等于在说:“瞧,我确实有匹配的专用密钥;我能成功的对您的消息进行解密!”最后,
远程主机R的sshd 得出结论,既然主机X持有匹配的专用密钥,就应当认为主机X是主机L,允许登录。