ssh 无需输入密码自动连接认证攻略

本文介绍了如何通过SSH的RSA密钥对认证实现自动连接服务器,避免每次输入密码。步骤包括生成密钥对、放置公钥到GitHub和个人服务器以及设置私钥。通过修改authorized_keys文件和使用ssh-copy-id工具,可以简化配置过程,实现无密码登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh 是我们工作中使用的最频繁的工具了,让ssh自动连接服务器,避免每次访问都输入密码,会让你的工作变的更快捷。

ssh 的连接有两种连接认证方式,一种是用户名密码方式,另一种是使用证书认证,证书认证实际就是RSA密钥对认证。

我们要避免输入密码,就选择用密钥对来认证,方便快捷。

配置过程比较简单,只需要三步即可完成。

第一步 : 生成密钥

     1) 打开shell , 执行 ssh-keygen -t rsa

     2)提示输入保存密钥的文件名,我输入的是 id_rsa ,回车

     3)又提示要输入保护密码,这里直接回车,不需要密码保护

     4) 完成后如下图,在当前目录下会生成  id_rsa 和 idrsa.pub 两个文件,一个是rsa密钥对的私钥,一个是公钥(带.pub的)

 

第二步: 放置公钥

     在证书认证过程中,公钥即公开的密钥,是不需要保密的,可以发给任何人。你想要谁认证你,你就给谁发一份儿,让他保存起来。后面认证的时候,用你的私钥加密一段文字,他用你的公钥能解密,解密成功了,也证明你是可信任的了。

     1、公钥给GITHUB 服务器

        公钥给谁,如果你要GITHUB服务器认证你,你就给github服务器,github服务器接收你的公钥的位置,是在你登录完GITHUB在网右上角的个人小图标里,进入个人账号空间,在 SSH and GPG keys 菜单里,点 New SSH Key 新增你的公钥。

 

       把上面第一步中的 rsa_id.pub 文件中的内容完全复现到新弹出的窗口中,保存即可。

       这样,GITHUB就拿到了你的公钥了。

    2、公钥给你的机房中的LINUX服务器

       如果你想登录你的机房中LINUX服务器,避免输入用户密码,那你把你的公钥就给这些服务器。

       在服务器上公钥放哪儿呢,放到当前用户home 目录下的 .ssh 目录下的 authorized_keys 文件中,如果没有此文件,你就用你上面生成的公钥文件id_rsa.pub替换此文件即可,如果已经有,可以把你的公钥APPAND到最后即可。

       注意,.ssh 目录是隐藏文件夹,进入当前用户的HOME目录后可以使用 ls -a 显示出来

       ssh 登录后默认就是在你的账号home目录中的,如果你是在其它位置,可以使用 cd ~  命令直接进入你的 当前用户home 目录下

         ~.ssh/authorized_keys  即为公钥文件的存放处

      小技巧:可以使用 ssh-copy-id 工具直接把你本机的公钥发送到服务器端,格式如下

     ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.231

     这条指令把我本机用户 home 目录下的 id_rsa.pub 文件发送到 192.168.0.231 服务器root用户的 home 目录下,并添加到 authorized_keys 文件中

第三步: 放置私钥

     上面一步中我们把公钥放置好了,现在该放置私钥到适合的位置。

     私钥是你的保密密钥,不能让别人看到,所以需要放到你的本地,让 ssh 程序能找到并在连接的时候自动读取私钥使用。

     私钥文件在你当前用户的home目录下的 .ssh 隐藏文件夹下,文件名叫 id_rsa, 即把你上面生成的私钥文件is_rsa复制到这下面即可。

       ~/.ssh/id_rsa 即为私钥文件的存放处

 至此,所有配置都已经完成,你随意启动一个 shell ,都可以无需任何密码访问你的github仓库或你的机房服务器。

 几种常见错误解决:

    1、私钥文件权限过多,需要使用 chmod 600  ~/.ssh/id_rsa  收一下权限即可,这个是ssh程序为了防止私钥文件被黑客攻击,强制私钥文件必须是弱权限,如下:

         

 

### Windows SSH 自动化登录配置方法 在 Windows 系统中实现 SSH 连接可以通过多种方式进行配置。以下是基于提供的引用内容以及专业知识整理的解决方案。 #### 方法一:使用公钥认证实现登录 此方法依赖于 SSH 钥对(公钥和私钥),并通过将其分发到目标服务器完成身份验证。 1. **生成 SSH 钥对** 在本地计算机上运行以下命令以生成新的 RSA 或 ED25519 类型的钥对: ```bash ssh-keygen -t rsa -b 4096 -C "[email protected]" ``` 此命令会提示指定存储路径,默认情况下为 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub`,并可选设置密码保护[^1]。 2. **将公钥复制至远程主机** 使用 `ssh-copy-id` 工具将生成的公钥传输给目标服务器: ```bash ssh-copy-id user@remote_server_ip ``` 如果未安装该工具,则需手动编辑远程用户的 `.ssh/authorized_keys` 文件并将公钥粘贴进去[^3]。 3. **测试连接** 完成上述步骤后,可通过简单执行如下命令检验是否成功建立无需密码的身份验证通道: ```bash ssh user@remote_server_ip ``` #### 方法二:利用 Windows Terminal 中的 WSL 进行配置 对于那些希望通过 Windows Subsystem for Linux (WSL) 来简化流程的情况,可以按照下面的方法操作: 1. **启用 WSL 并安装发行版** 前往 Microsoft Store 下载 Ubuntu 或其他兼容版本,并启动初始化过程创建默认账户及其关联环境变量。 2. **重复 Method One 的前两步** 即使是在 WSL 内部也遵循相同的逻辑构建安全通信机制——即生成新钥匙组并向远端推送授权信息[^2]。 3. **调整服务端权限设定** 确认 `/etc/ssh/sshd_config` 文件中的某些选项已被正确激活以便支持非交互式的登陆请求;例如允许 Key-Based Authentication (`PubkeyAuthentication yes`) 及禁用 PasswordAuthentications(`PasswordAuthentication no`)等策略修改可能需要管理员权限才能生效[^4]。 #### 方法三:借助第三方软件如 PuTTY/Pageant 实现类似效果 尽管题目特别强调了针对原生 SSH Client 的讨论,但值得注意的是还有许多优秀的跨平台图形界面应用同样能够满足此类需求。比如通过 Pageant 加载预先解锁过的 PPK 格式证书即可达到全程无人值守的效果。 --- ### 注意事项 - 确保防火墙规则开放必要的 TCP/IP 端口流量。 - 对敏感数据采取适当加措施防止泄露风险。 - 定期审查访问记录排查潜在安全隐患。 ```python import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) private_key_path = r"C:\path\to\id_rsa" pkey = paramiko.RSAKey.from_private_key_file(private_key_path) try: client.connect('remote_server_ip', username='user', pkey=pkey, timeout=10) except Exception as e: print(f"Connection failed with error {str(e)}") finally: client.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TDengine (老段)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值