本文也同步发布到 rainux.org: 基于公钥认证方式的 OpenSSH Server 自动登录完全手册(Linux/Windows 下的 SSH 自动登录指南)
概述
假设要以用户 rainux 的身份登录运行 OpenSSH Server 的远程主机 www.rainux.org(现在几乎所有的 Linux 服务器都使用 OpenSSH Server 作为 SSH Server),那么需要做的操作如下:
-
生成用于 SSH 身份认证的密钥。密钥由公钥和私钥组成,一个公钥只对应一个私钥,一个私钥也只对应一个公钥。
-
将 OpenSSH 格式的公钥文本追加到远程主机上的 ~rainux/.ssh/authorized_keys
文件里(~rainux
意为用户 rainux 的 HOME 目录)。注意公钥文本中应该没有换行符,一行就是一个公钥。
-
确保 ~rainux/.ssh/authorized_keys
权限为 600,~/rainux/.ssh
目录权限为 700,并且它们的所有者都是 rainux。
-
指定 SSH 客户端使用对应的私钥并以用户 rainux 的身份登录 www.rainux.org,此时无需输入 rainux 在 www.rainux.org 上的密码。
注意,如果私钥是以加密形式存储的(强烈建议使用一个强壮的密码加密私钥,这样即使私钥文件被窃取,也无法被直接使用),第四步仍然需要输入加密私
钥所用的密码。但是 PuTTY 和 OpenSSH
都有提供一个代理程序用于避免多次重复输入密码。运行代理程序后将私钥添加到其中,并且输入一次加密私钥所用的密码,然后保持代理程序的运行,以后
SSH
客户端即可在需要使用私钥进行身份认证的场合请求代理程序去完成身份认证(这是为了确保私钥不会被泄漏到任何使用代理程序的客户端上),无须再次输入任何
密码。
Linux / Cygwin / MSYS 上使用 OpenSSH Client
生成密钥
执行 ssh-keygen
接受默认文件名,并且输入加密私钥用的密码(passphrase)即可生成私钥 ~/.ssh/id_rsa
和对应的公钥 ~/.ssh/id_rsa.pub
。其中 id_rsa.pub
的内容可以直接追加到远程主机的 authorized_keys
文件里。
使用私钥
把公钥部署到远程主机上后,即可直接执行 ssh rainux@www.rainux.org
来登录远程主机。但如果私钥是加密形式保存,如上所述应该使用代理程序 ssh-agent 来避免每次输入密码。
直接执行 ssh-add
命令可以添加刚才生成的私钥到 ssh-agent 里,也可以用 ssh-add -l
查看已经添加的私钥。如果执行 ssh-add 时提示无法连接身份认证代理,则需要使用以下命令来启动 ssh-agent。
eval `ssh-agent`
使用 eval 是为了执行 ssh-agent 输出的设置环境变量的 bash 命令,以确保 ssh-add 可以通过 SSH_AUTH_SOCK
环境变量找到 ssh-agent。
GNOME 的桌面系统如果有安装 gnome-keyring,它会自动管理 ssh-agent,通常甚至无须手工添加私钥到 ssh-agent 里,第一次使用公钥时 gnome-keyring 就会提示输入一次密码,以后则不再需要。
Windows 上使用 PuTTY
生成密钥
到 PuTTY
的下载页面
下载 putty-0.60-installer.exe
或者 putty.zip
,两者都包含 PuTTY 所有的组件。
安装好 PuTTY 之后(对于 zip 版本来说,解压到任意目录即可)运行 PuTTYGen 生成自己的密钥。选择密钥类型为 SSH-2
RSA,点击 Generate,按照提示在 PuTTYGen 窗口内随机移动鼠标直到进度条达到 100%,然后 PuTYYGen
会生成密钥并且显示其公钥部分信息。这里可以填写一个有意义的注释,然后输入一个用来加密私钥的强壮的密码(Key passphrase)。最后点击
Save private key 将私钥保存为一个 .ppk 文件。不需要单独 Save public key,因为 .ppk
文件里已经包含了公钥。并且通过 Save public key 保存出来的公钥文件格式与 OpenSSH 的格式并不相同,若要将公钥部署到使用
OpenSSH Server 的服务器上,只能使用 PuTTYGen 窗口上显示的那一段 Public key for pasting
into OpenSSH authorized_keys file。
使用私钥
将公钥部署到远程主机上之后,使用 PuTTY 登录该远程主机时可以在 Connection > SSH > Auth 里选择用于身份认证的私钥文件。同样,如果私钥是加密形式保存,应该使用代理程序 Pageant 以避免每次输入密码。
最简单的办法是创建一个 Pageant 的快捷方式,并且将 .ppk 私钥文件作为参数加到快捷方式的“目标”栏里,添加之后看上去应该像这样:
C:\PuTTY\pageant.exe D:\main.ppk "D:\My Secrets\secondary.ppk"
就像上面的例子一样,如果私钥文件路径中带有空格,应该使用引号将其括起来。通过这个快捷方式启动 Pageant
则会自动装载指定的私钥文件,并且立即询问用于加密私钥的密码。以后只要保持 Pageant 的运行,并且在 PuTTY 的某个 Saved
session 里设置 Connnection > Data 里设置 Auto-login username,即可实现双击该
session 则完全自动登录。
分享到:
相关推荐
2. **Ubuntu中的OpenSSH Server**:Ubuntu是一个基于Debian的Linux发行版,其软件包管理系统Apt包含OpenSSH Server的预编译包。离线安装包则适用于无法连接到互联网或者网络环境受限的环境,可以通过本地的.deb文件...
"公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.txt"可能进一步阐述了这些概念的实际应用,例如在电子商务、电子政务、物联网设备认证等场景下的作用和实现方法。 "公钥加密与PKI实验_加密解密_实验楼 - ...
OpenSSH服务器(openssh-server)基于SSH协议,为用户提供加密的网络通信,以防止数据在传输过程中被窃取或篡改。SSH协议主要由两部分组成:客户端和服务端。服务端在系统上运行,等待并响应客户端的连接请求。...
8. **安全强化**:为了提高安全性,可以考虑禁用不必要的SSH服务(如Root用户的直接SSH登录),启用公钥认证,定期更换密钥,并监控系统的SSH日志。 在无网络环境下手动安装OpenSSH-server是一项相对复杂的任务,...
2. **基于密钥的安全验证**:这种方式更为安全,要求用户在远程服务器上生成一对非对称密钥(公钥和私钥)。公钥存储在远程服务器的用户宿主目录中,而私钥则由用户妥善保管。当用户尝试登录时,系统会使用公钥验证...
认为基于公钥加密的RFID认证协议相对基于哈希函数和基于对称密钥加密的RFID认证协议,有较好的安全性。公钥加密算法NTRU被认为是一种效率较高的加密算法,且更适合于RFID系统,因此提出的协议采用了NTRU公钥加密算法...
在Ubuntu 14.04系统中,OpenSSH Server(openssh-server)是用于实现安全远程登录的关键组件。OpenSSH是一套开源软件,提供安全的网络服务,包括SSH协议,用于替代传统的不安全的telnet和rlogin。在这个场景中,用户...
《基于全维公钥认证的CPU卡读写器及系统认证方法》是针对现代电子设备安全防护中的一个重要领域,尤其在设备装置的行业分类中,它具有显著的应用价值。CPU卡,即中央处理器卡,是一种集成了微处理器的智能卡片,广泛...
在Windows操作系统上安装OpenSSH Server是一项实用的任务,它允许用户通过SSH协议在Windows与其它支持SSH的设备之间进行安全的远程连接。OpenSSH是开源软件,通常在Linux系统中使用,但通过一些调整,也可以在...
sudo yum install openssh-server openssh-clients ``` 3. 配置OpenSSH: - 编辑配置文件`/etc/ssh/sshd_config`,根据需求调整设置。 - 例如,启用公钥认证,取消`PubkeyAuthentication yes`行前的注释。 - ...
SSH 配置公钥和私钥登录 SecureCRT SSH(Secure Shell)是一种网络协议,用于安全地访问和管理远程服务器。... SecureCRT 的公钥认证配置可以方便地管理多个服务器,并且提供了便捷的自动化解决方案。
公钥密码体制,也称为非对称加密,基于一对密钥(公钥和私钥)的使用,其中公钥可公开,用于加密信息,而私钥则需保密,用于解密。这种机制下,即使攻击者截获了加密信息,由于没有私钥,也无法解密信息,从而增强了...
为了提高OpenSSH的安全性,建议关闭不必要的服务,如PasswordAuthentication,只允许公钥认证。启用`UsePAM yes`来使用Pluggable Authentication Modules (PAM)进行更复杂的认证控制。限制root用户通过SSH直接登录,...
在当前信息技术高度发达的背景下...以上知识点详细阐述了基于公钥密码的通信网络安全加密系统设计的主要内容、采用的加密算法、系统构建的方式以及安全性验证等方面,为网络通信加密领域提供了新的研究方向和实践经验。
sudo yum install openssh-server openssh-clients -y ``` 安装完成后,启动OpenSSH服务并设置开机启动: ```bash sudo systemctl start sshd sudo systemctl enable sshd ``` 为了验证安装是否成功,可以尝试从...
Kerberos是基于可信第三方KDC的认证协议,使用对称密钥加密算法,提供了网络通 信方之间相互的身份认证手段,而且并不依赖于主机操作系统和地址,在一定程度上保 证了网络的安全。但是,由于Kerberos自身的局限性,...
OpenSSH(Open Source Secure Shell)是一款广泛使用的网络协议,它允许用户在不安全的网络环境中进行加密的远程登录和其他安全网络服务。9.6p1版本是OpenSSH的最新维护版本,此升级包的主要目的是修复一个名为CVE-...
3. **安全配置**:设置合理的权限和安全策略,如限制root用户的直接SSH登录,启用公钥认证,以及配置防火墙规则,只允许特定IP或端口进行SSH连接。 4. **日志监控**:定期检查sshd的日志文件,以便及时发现并处理...
- **步骤4**: 将OpenSSH的公钥文件转换成SSH2的公钥文件。执行命令: ``` ssh-keygen -e -f id_rsa.pub > id_rsa_SSH2.pub ``` 命令中的`-e`选项表示对公钥文件进行编码处理,以便于SSH2使用。 - **步骤5**: 将...
在三大主要的认证体制PKI,IBE和CPK中,基于身份标识的组合公钥体制CPK拥有我国自主知识产权,解决了大规模认证中密钥管理、离线验证和跨域认证等难题。首先,介绍CPK算法原理;其次,详细分析CPK的体系结构、密钥产生、...