Linux服务器配置ssh免密码登陆教程

举报
斜月吟风 发表于 2025/03/05 11:29:14 2025/03/05
【摘要】 SSH 的全称是 Secure Shell ,使用非对称加密方式,传输内容使用 rsa 或者 dsa 加密,可以有效避免网络窃听。有时候,我们需要能免密码登陆 Linux 系统,比如 Hadoop 操作,这时就要开启 SSH 免密码登陆。注意,不用的用户生成的密钥是不同的,每个用户生成密钥都放在该用户主目录的“.ssh”目录中;比如:root 生成的密钥存放在“/root/.ssh”目录,个...

SSH 的全称是 Secure Shell ,使用非对称加密方式,传输内容使用 rsa 或者 dsa 加密,可以有效避免网络窃听。有时候,我们需要能免密码登陆 Linux 系统,比如 Hadoop 操作,这时就要开启 SSH 免密码登陆。

注意,不用的用户生成的密钥是不同的,每个用户生成密钥都放在该用户主目录的“.ssh”目录中;比如:root 生成的密钥存放在“/root/.ssh”目录,个人用户的存放在“/home/[username]/.ssh”目录中。

ssh client 有两个配置文件,/etc/ssh/ssh_config 和 ~/.ssh/config,前者是对所有用户,后者是针对特定用户,两个文件的格式是一样的,待会密钥文件会生成在~/.ssh下。

现在进入正题,假设我要在 A 设备(我这里是本地mac OS,其他 linux 系统也都可以)免密码登陆 B 服务器。

第一步:在A中生成密钥

在A进入~/.ssh文件夹,执行以下命令:
ssh-keygen -t rsa
一路回车后,在~/.ssh下会生成 id_rsa,和 id_rsa.pub,其中id_rsa是密钥,id_rsa.pub是公钥。

第二步:把在 A 机生成的 id_rsa.pub 拷贝到 B 机上。

怎么跨主机复制文件呢,下面的命令可以做到:(假设放在 B 的 tmp 目录中)

scp id_rsa.pub root@B:/tmp  //scp -r是拷贝文件夹
# 举个例子:将服务器的/www/api/ 复制到本地的~/www(在本地执行) 
scp -r root@101.200.52.143:/www/api/ ~/www 

第三步:将刚才拷贝的 id_rsa.pub 公钥文件拷贝到 B 的 authorized_keys 目录中(没有就创建,注意权限不能是777,可以设置成700或者400):

cd ~/.ssh
cat /tmp/id_rsa.pub>>authorized_keys

如果需要修改权限,可以执行:
chmod 400 authorized_keys
然后就可以去A上面测试登录了,看是否还需要输入密码,如果直接进入了就表示成功了。
另外,每次登陆都要输入 ssh user@主机 -u -p 太麻烦了,我们可以修改一下 ssh_config 。
按照如下步骤即可:

cd /etc/ssh && sudo vim ssh_config 
# 或者(这个两个目录的都会生效)
cd ~/.ssh && sudo vim config

在其中加入如下代码:

Host service
  HostName 127.0.0.1
  User zhangsan
  IdentifyFile xxx

其中service是别名 127.0.0.1 是你要登陆的服务器,zhangsan是用户, IdentifyFile是密钥,之后直接使用下面的命令就可以通过 ssh 免密登录了,十分方便。
ssh service

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。