无密码登陆

参考:

点击打开链接


假设 A 为客户机器,B为目标机;


要达到的目的:

A机器ssh登录B机器无需输入密码;

加密方式选 rsa|dsa均可以,默认dsa


做法:

1、登录A机器 

2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;

ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.

具体方法如下:

ssh-keygen -t rsa

然后全部回车,采用默认值.


这样生成了一对密钥,存放在用户目录的~/.ssh下。

将公钥考到对方机器的用户目录下,并拷到~/.ssh/authorized_keys中。


要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。


通过别名登陆:

在 ~/.ssh/ 目录下有个 config文件,在config文件中增加如下:

Host logstash1

     HostName 10.10.153.22

     user root

     StrictHostKeyChecking no

     UserKnownHostsFile /dev/null

     CheckHostIP no

这样配置了直接通过 ssh   logstash1 就可以登陆 10.10.153.22这台机器了


<think>嗯,用户想了解SSH无密码登录,我需要先理清楚基本概念和步骤。首先,SSH无密码登录通常是通过公钥认证实现的,用户生成一对密钥,然后把公钥放到服务器上,这样登录时就不用输入密码了。 接下来,我得考虑用户可能的背景。可能是刚接触服务器管理的新手,或者有基础的开发者想简化登录流程。需要分步骤解释,避免使用太专业的术语,同时确保步骤准确。 第一步,生成密钥对。这里要说明用ssh-keygen命令,默认是RSA,现在可能推荐ed25519更安全。要提醒用户设置空密码或者根据安全需求决定,但建议使用密码短语增加安全性。 第二步,复制公钥到服务器。这里有两种方法,ssh-copy-id命令比较方便,手动操作的话需要把公钥内容追加到~/.ssh/authorized_keys文件中。要注意文件权限,否则可能失败,比如.ssh目录权限应该是700,authorized_keys是600。 第三步,测试登录。成功的话就直接进入,否则可能需要检查权限或者路径是否正确。可能遇到的常见问题包括权限设置错误、公钥未正确安装、服务器SSH配置是否允许公钥认证等。 安全性方面,需要强调私钥的保护,不能泄露,建议加密存储。可能用户会担心无密码登录的安全性,可以解释公钥认证的原理,说明比密码更安全,尤其是使用强加密算法的情况下。 扩展应用部分,可以提到自动化脚本、Git仓库的SSH访问,或者配置多台服务器的情况,方便用户管理多个服务器。 另外,常见问题处理,比如如果还是需要密码,可能检查服务器sshd配置中的PubkeyAuthentication是否为yes,AuthorizedKeysFile路径是否正确。还有可能用户生成密钥时用了非默认名称,需要指定-i参数。 最后,确保整个流程用中文清晰表达,结构分明,步骤详细,同时注意LaTeX格式的正确使用,但这里可能涉及的命令行代码不需要数学公式,所以主要用代码块的形式展示,不过根据用户要求,可能行内变量需要用$...$,但实际命令中的参数一般不用数学符号,所以可能不需要太多LaTeX,但需要确认系统级指令是否影响代码块的展示。用户提到的行内数学表达式需要$...$,但命令行代码可能属于代码块,不需要转换。所以可能主要是在正常文本中提到的变量或技术术语需要用LaTeX吗?比如密钥类型RSA、ed25519可能需要用$RSA$?不过可能不需要,这里可能需要进一步确认,但根据例子,用户给的例子是数学表达式,而技术术语如RSA可能不需要。所以可能这部分不需要使用LaTeX,保持正常文本即可。 总之,整理步骤,分点说明,确保用户能一步步操作,同时涵盖可能的问题和注意事项,帮助用户顺利实现SSH无密码登录。</think>SSH 无密码登录是一种通过**公钥认证**实现的安全登录方式,无需每次手动输入密码。以下是实现原理与步骤详解: --- ### 一、核心原理 1. **密钥对生成** 用户本地生成一对密钥: - **私钥** (`id_rsa`):存储在本地,需严格保密 - **公钥** (`id_rsa.pub`):上传到服务器,用于验证身份 2. **认证流程** 当用户通过 SSH 连接服务器时: - 服务器用公钥加密随机数据,发送给客户端 - 客户端用私钥解密并返回结果,验证成功后允许登录 --- ### 二、配置步骤 #### 1. 生成密钥对(本地操作) ```bash # 使用 RSA 算法(推荐 ed25519,更安全) ssh-keygen -t ed25519 -C "your_email@example.com" # 按提示选择保存路径(默认 ~/.ssh/id_ed25519) # 设置密钥密码(可选,建议设置以增强安全性) ``` #### 2. 上传公钥到服务器 **方法一:自动上传** ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip ``` **方法二:手动操作** 1. 复制公钥内容: ```bash cat ~/.ssh/id_ed25519.pub ``` 2. 登录服务器,将公钥追加到 `~/.ssh/authorized_keys`: ```bash mkdir -p ~/.ssh chmod 700 ~/.ssh echo "粘贴公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` #### 3. 测试登录 ```bash ssh user@server_ip # 若配置成功,无需输入密码即可登录 ``` --- ### 三、关键注意事项 1. **文件权限** - `.ssh` 目录权限必须为 `700` - `authorized_keys` 文件权限必须为 `600` 2. **服务器配置检查** 确保服务器 `/etc/ssh/sshd_config` 包含: ```bash PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ``` 修改后重启服务: ```bash sudo systemctl restart sshd ``` 3. **安全性建议** - 私钥必须加密存储(如使用 `ssh-agent` 管理) - 禁用密码登录(在服务器配置中设置 `PasswordAuthentication no`) --- ### 四、扩展应用 - **多服务器管理**:将同一公钥上传到多个服务器 - **自动化脚本**:在脚本中直接使用 `ssh` 无需交互输入 - **Git 仓库访问**:通过 SSH 协议免密拉取/推送代码 --- ### 五、常见问题排查 1. **仍提示输入密码** - 检查公钥内容是否正确 - 确认服务器 `.ssh/authorized_keys` 文件权限 2. **密钥路径不匹配** 若使用非默认密钥名称,需显式指定: ```bash ssh -i ~/.ssh/custom_key user@server_ip ``` 通过以上步骤,您可实现高效且安全的 SSH 无密码登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值