如果我们希望从localhost主机通过SSH登录remotehost主机,执行如下命令:
创新互联一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供成都网站制作、做网站、成都网页设计、小程序开发、成都网站开发、成都网站制作、成都软件开发、重庆APP开发公司是成都本地专业的网站建设和网站设计公司,等你一起来见证!ssh username@centos-i1
这是 ssh
处理认证的缺省方式,它会要求我们输入username的密码,如果我们输入密码,ssh
就会用安全密码认证协议,把我们的密码传送给 remotehost进行验证。但是,和 telnet
的情况不同,这里我们的密码是加密的,因此它不会被偷看到我们的数据连接的人截取。一旦 remotehost把我们提供的密码同它的密码数据库相对照进行认证,成功的话,我们就会被允许登录。
为了使用这种认证方式,我们首先得生成一对密钥:一把专用密钥和一把公用密钥。公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对该消息进行解密。公用密钥只能用于加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行解密。RSA(和 DSA)认证协议利用密钥对的这些特殊性质进行安全认证,并且不需要在网上传输任何保密的信息。
然后把公用密钥拷贝到 remotehost。公用密钥之所以被称作是“公用的”有一个原因是因为它只能用于对那些给我们的消息进行加密,所以我们不需要太担心它会落入其它人手中。一旦我们的公用密钥已经被拷贝到 remotehost 中,并且为了让remotehost 的 sshd 能够定位它而把它放在一个专门的文件(~/.ssh/authorized_keys)里,我们就为使用 RSA 认证登录到 remotehost 上做好了准备。
要用 RSA 登录的时候,就象我们常做的一样,我们只要在 localhost 的控制台键入ssh username@centos-i1。但是这一次,ssh 告诉 remotehost 的 sshd 它想使用 RSA 或DSA认证协议。Remotehost 的 sshd 会生成一个随机数,并用我们先前拷贝过去的公用密钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 localhost 上运行的 ssh。接下来,轮到localhost的 ssh 用专用密钥对这个随机数进行解密后,再把它发回给 remotehost,实际上等于在说:“瞧,我确实有匹配的专用密钥;我能成功的对您的消息进行解密!”。这样remotehost的 sshd 得出结论,既然我们持有匹配的专用密钥,就应当允许我们登录。
关于 RSA 和 DSA 认证有两项重要的注意事项。
我们的确只需要生成一对密钥。然后我们可以把我们的公用密钥拷贝到想要访问的那些远程机器上,并进行恰当的认证配置。换句话说,我们并不需要为想要访问的每个系统都准备一对密钥。只要一对就足够了。
专用密钥不应落入其它人手中。正是专用密钥授权我们访问远程系统,任何拥有我们的专用密钥的人都会被授予和我们完全相同的特权。我们应该保护我们的专用密钥以防未授权的使用。
ssh 的开发者们当然知道专用密钥的重要性,而且他们已经在 ssh 和 ssh-keygen 里加入了一些防范措施,以防止我们的专用密钥被滥用。首先,ssh 被设置成了如果我们的密钥的文件权限允许除我们之外的任何人读取密钥,就打印出一条大大的警告消息。其次,在我们用 ssh-keygen 创建公用/专用密钥对的时候,ssh-keygen 会要求我们输入一个密码短语。如果我们输入了密码短语,ssh-keygen 就会用该密码短语加密我们的专用密钥,这样,即使专用密钥被盗,对于那些碰巧不知道密码短语的人而言,这把专用密钥是毫无用处的。
以主机centos-i2免密码登录centos-i1为例。
1.在主机centos-i2生成公私密钥
[root@centos-i2 ~]# ssh-keygen #缺省使用RSA协议,也可以通过-t dsa参数来使用DSA协议
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): #此处直接回车
Enter same passphrase again:
Your identification has been saved in/root/.ssh/id_rsa.
Your public key has been saved in/root/.ssh/id_rsa.pub.
The key fingerprint is:
33:3e:b4:b5:bb:76:e3:6d:c9:2a:53:93:24:31:0b:40root@centos-i2
这样就会如程序提示在/home/.ssh目录生成两个文件,分别是公私密钥。
2.把生成的公钥文件id_rsa.pub复制到centos-i1主机上
[root@ce[root@centos-i2 .ssh]# scpid_rsa.pub root@centos-i1:/root/.ssh
root@centos-i1's password: #此时免密码设置还没有配好,所以需要密码
id_rsa.pub 100% 396 0.4KB/s 00:00
3.在centos-i1主机上配置centos-i2的公钥
[root@centos-i1 .ssh]# cat id_rsa.pub>> authorized_keys
上述3步骤配置完成后,就可以通过ssh和scp命令在centos-i2上免密码ssh登录centos-i1了。示例如下:
[root@centos-i2 .ssh]# ssh root@centos-i1
[root@centos-i2 lb]# scp fio-2.2.10.tar.gzroot@centos-i1:/home/lb
但是,由于步骤一中我们没有使用密码短语来保护私钥,如果私钥被不恰当使用,可能会带来风险。为了避免由此带来的隐患,可以使用ssh-agent。关于ssh-agent的使用方法,可以看参考文献。
ssh
协议的版本 1 使用的是 RSA 密钥,而 DSA 密钥却用于协议级 2,这是 ssh
协议的最新版本。目前所有的 OpenSSH 版本都应该既能使用 RSA 密钥又能使用 DSA 密钥。DSA 密钥以如下类似于 RSA 密钥的方式使用 OpenSSH 的 ssh-keygen
生成:
% ssh-keygen -t dsa
又会提示我们输入密码短语。输入一个安全的密码短语。还会提示我们输入保存 DSA 密钥的位置。正常情况下,缺省的 ~/.ssh/id_dsa 和~/.ssh/id_dsa.pub 就可以了。在我们一次性生成 DSA 密钥完成后,就该把我们的 DSA 公用密钥安装到远程系统上去了。
DSA 公用密钥的安装又是几乎和 RSA 安装完全一样。对于 DSA,我们将要把 ~/.ssh/id_dsa.pub 文件拷贝到 remotehost,然后把它附加到remotehost 上的~/.ssh/authorized_keys2 文件。请注意这个文件的名字和 RSA 的 authorized_keys 文件名不同。一旦配置完毕,输入我们的 DSA 专用密钥的密码短语就应该能登录到 remotehost,而不需要我们输入在 remotehost 上真正的密码。
参考文献
https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html
https://www.ibm.com/developerworks/cn/linux/security/openssh/part2/
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。