Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】

ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法。

使用密钥登录分为3步:
1、生成密钥(公钥与私钥);
2、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。

一、生成密钥公钥(Public key)与私钥(Private Key)

打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“User Key Generation Wizard...”(密钥生成向导),如下图:

xshell_make_public-key-01

弹出“User Key Generation Wizard”对话框,在“Key Type”项选择“RSA”公钥加密算法,“Key Length”选择为“2048”位密钥长度,如下图:

xshell_make_public-key-02

点击“Next”,等待密钥生成:
xshell_make_public-key-03

继续下一步,在“Key Name”中输入Key的文件名称,我这里为“key”;在“Passphrase”处输入一个密码用于加密私钥,并再次输入密码确认,如下图:
xshell_make_public-key-04

点击“Next”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到文件,如下图。私钥这里不显示,可以在“User Key Mangager...”导出到文件:
xshell_make_public-key-05

点击“Save as file...”按钮,将公钥(Public key)保存到磁盘,文件名为“key.pub”,备用。

二、上传公钥(Public Key)到服务器:

使用到Xshell登录到服务器,进入到“/root/.ssh/”目录,运行rz命令(如果没有rz命令,运行yum install lrzsz安装),将key.pub发送到服务器,然后运行如下命令,将公钥(Public Key)导入到“authorized_keys”文件:

  1. [root@localhost ~]# cd /root/.ssh/
  2. [root@localhost .ssh]# rz
  3. rz waiting to receive.
  4. [root@localhost .ssh]# cat me.pub >> authorized_keys
  5. [root@localhost .ssh]# chmod 600 authorized_keys
  6. [root@localhost .ssh]# ls
  7. authorized_keys known_hosts me.pub
  8. [root@localhost .ssh]# cat authorized_keys
  9. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4VCOWFrARc1m3MfEAL50v2Z2siavO3Ijpr/LZ00EZah8EjfZhqjAc/agkljyXmNGpVDpRdtlYco8h3P5vegXOEgKcX74fDYm0vNdVABVD1XSD8ElNyLTCCNk7rZJbi3htJox3Q1n0vnMmB5d20d9occkAx4Ac94RWNS33EC5CszNTMgAIn+uZl0FlQklS1oSyWFahSTWyA6b33qG7Y5E4b6J/caObnPx6EgtBrgi97gXJHZWyYlGrpWmUuhPqs5XToRB08CVxAyzewtq1MXv0p+Po4L1pbHLRf+TSoZ5RSBZZjY4/JMAzdXHNtnAyO0j0VNGbBXKUcNSAHZ

xshell_public-key_login_upload

三、配置Xshell使用密钥认证方式登录到服务器:

打开Xshell,点击“New”按钮,弹出“New Session Properties”对话框,在“Connection”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口,如下图所示:

xshell_public-key_set_02

点击左侧的“Authentication”,切换到认证栏目,在“Method”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“User Key”中选择我们刚才生成的私钥“key”,“Passphrase”中输入私钥的加密密码。

xshell_public-key_set_01

点击确定,Xshell配置ssh免密码登录配置完成。

附录:linux ssh-keygen命令生成密钥:

其实,linux下的ssh-keygen下也可以生成密钥,在linux下输入ssh-keygen -t rsa,在提示下,输入密钥的名称(这里为key)和私钥加密密码,既完成密钥生成。生成的两个文件中,“key”为私钥,“key.pub”为公钥。如下图所示:

linux_make_public-key

### FinalShell 连接阿里云服务器失败解决方案 #### 一、可能的报错原因分析 1. **SSH端口未开放** 如果阿里云的安全组规则中没有开放默认的 SSH 端口(22),则可能导致连接超时。通常情况下,安全组需要允许入站流量通过指定的端口[^1]。 2. **网络环境问题** 部分企业或学校网络可能会屏蔽标准的 SSH 端口(22)。此时可以尝试使用 GitHub 提供的备用端口(如 443)来测试连接是否正常。 3. **密钥或密码错误** 如果使用了错误的用户名或密码登录,或者私钥文件不匹配,则会引发认证失败的问题。确保使用的 root 用户或其他具有权限的用户能够正确登录[^3]。 4. **防火墙限制** 除了阿里云自身的安全组外,操作系统内部也可能存在防火墙策略(如 `iptables` 或 `firewalld`),这些策略同样会影响外部访问。 --- #### 二、具体解决步骤 ##### 1. 检查并调整安全组规则 确认阿里云实例的安全组已开放必要的端口(通常是 22 端口用于 SSH 登录)。如果因特殊需求更改过默认端口,则需同步更新安全组中的规则。 ```bash # 查看当前安全组规则 aliyun ecs DescribeSecurityGroupAttribute --RegionId your-region-id --SecurityGroupId your-security-group-id ``` 如果没有找到对应的端口条目,请手动添加一条规则以允许特定 IP 地址范围内的请求: ```json { "IpProtocol": "tcp", "PortRange": "22/22", "SourceCidrIp": "0.0.0.0/0" } ``` > 注意:将 `"SourceCidrIp"` 设置为 `"0.0.0.0/0"` 表示允许全球范围内任意地址访问,生产环境中建议缩小范围以提高安全性。 --- ##### 2. 替代端口测试 当发现常规 SSH 端口被阻断时,可考虑切换至其他可用端口进行通信。例如,在 FinalShell 中配置如下参数: | 参数 | 值 | |------------|------------------------| | 主机 | 公网IP | | 端口 | 443 | | 用户名 | root | 随后验证连通性: ```bash ssh -T -p 443 git@ssh.github.com ``` 上述命令返回成功响应表明此路径畅通无阻。 --- ##### 3. 密钥身份校验 对于基于密钥的身份验证场景,务必保证客户端持有的私钥文件同服务端所存储的一致。假设采用 RSA 类型加密算法生成了一对新的密钥对,则执行以下指令上传公钥至目标机器上的 `.ssh/authorized_keys` 文件夹下: ```bash cat ~/.ssh/id_rsa.pub | ssh root@your-public-ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' chmod 600 ~/.ssh/authorized_keys ``` 此同时,还需留意 `/etc/ssh/sshd_config` 的相关内容项设定是否合理恰当,尤其是以下几个字段: - `PasswordAuthentication yes/no`: 是否启用密码模式; - `PermitRootLogin prohibit-password/yes`: Root 账号能否直接登陆以及其形式约束条件; - `PubkeyAuthentication yes`: 开启公钥支持功能; 最后重启 SSHD 守护进程使改动生效: ```bash systemctl restart sshd ``` --- ##### 4. 排除本地软件冲突 有时并非远端存在问题而是近端工具本身引起异常状况。针对这种情况可以从简化入手逐步排查定位根本所在——即卸载重装FinalShell应用或是更换成同类竞品Xshell做对比实验观察现象差异之处何在。 --- ### 总结 综上所述,造成 FinalShell 无法顺利接入阿里云服务器的原因可能是多方面的组合效应所致,包括但不限于网络安全防护机制设置不当、账户凭证失效乃至应用程序缺陷等方面因素共同作用的结果。逐一核查各项指标直至恢复正常运作状态为止乃是最佳实践途径之一[^2]. ```python import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: client.connect('your-public-ip', username='root', key_filename='/path/to/private/key') except Exception as e: print(f'Connection failed with error: {e}') finally: client.close() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值