千家信息网

SSH无密码登录方法及对应的机制

发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,缺省方式如果我们希望从localhost主机通过SSH登录remotehost主机,执行如下命令:ssh username@centos-i1这是 ssh 处理认证的缺省方式,它会要求我们输入user
千家信息网最后更新 2025年12月05日SSH无密码登录方法及对应的机制

缺省方式

如果我们希望从localhost主机通过SSH登录remotehost主机,执行如下命令:

ssh username@centos-i1

这是 ssh 处理认证的缺省方式,它会要求我们输入username的密码,如果我们输入密码,ssh 就会用安全密码认证协议,把我们的密码传送给 remotehost进行验证。但是,和 telnet 的情况不同,这里我们的密码是加密的,因此它不会被偷看到我们的数据连接的人截取。一旦 remotehost把我们提供的密码同它的密码数据库相对照进行认证,成功的话,我们就会被允许登录。

通过TSARSA的公私密钥认证方式

为了使用这种认证方式,我们首先得生成一对密钥:一把专用密钥和一把公用密钥。公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对该消息进行解密。公用密钥只能用于加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行解密。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 认证有两项重要的注意事项。

  1. 我们的确只需要生成一对密钥。然后我们可以把我们的公用密钥拷贝到想要访问的那些远程机器上,并进行恰当的认证配置。换句话说,我们并不需要为想要访问的每个系统都准备一对密钥。只要一对就足够了。

  2. 专用密钥不应落入其它人手中。正是专用密钥授权我们访问远程系统,任何拥有我们的专用密钥的人都会被授予和我们完全相同的特权。我们应该保护我们的专用密钥以防未授权的使用。

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步骤配置完成后,就可以通过sshscp命令在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的使用方法,可以看参考文献。

DSA协议的配置

DSA 密钥的生成

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 公用密钥的安装

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/


密钥 密码 专用 公用 认证 生成 输入 文件 短语 登录 加密 主机 消息 配置 拷贝 方式 随机数 安全 公私 步骤 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 审计机关网络安全检查 连接服务器请检查网络设备 护苗网络安全总结话语 网络安全术语 灯谜 韶关软件开发系统定制 湖州电脑软件开发是做什么的 深圳市重构网络技术有限公司 江苏放心软件开发参考价格 老旧服务器更换必要性 网络安全中的谋略学 家庭用服务器 噪音太大 福特中央数据库 网络安全法让执法者有法可依 mc史上第二乱的服务器 java做数据库的源代码 搭建流量分析软件开发系统 cf端游服务器不一样怎么加好友 ctf网络安全赛 flag 德国赛博科技软件开发企业管理 网络安全传输实验 Ftp服务器设置访问路径 软件开发周期生命流程 山西聚搜网络技术有限公司 微信云数据库可以在h5中使用吗 河东区电子网络技术创造辉煌 信息网络安全的第二个时代 蓝伙计互联网科技有限公司 第8次人口普查主要数据库 校园手机网络安全 北京廊坊金蝶网络技术
0