linux服务器之间免密登录

本文介绍了如何在Linux系统中为不同用户生成公钥和私钥,实现免密登录。首先在本地生成公钥和私钥,然后将公钥内容追加到目标服务器的~/.ssh/authorized_keys文件中。提供了一个自动化脚本用于检查和添加公钥,以root用户为例,脚本会判断是否已添加免密登录,未添加则将公钥写入authorized_keys。
摘要由CSDN通过智能技术生成

不同用户可以切换用户按照同样的步骤生成公钥,(如果使用文末的脚本,需要修改对应的脚本),实现对应用户免密登录,本篇文章是以root用户为例

一、在本地linux系统中生成公钥和私钥

# 进入目录
cd ~/.ssh/ 
# 创建秘钥
ssh-keygen -t rsa 

一直回车即可

其中id_rsa.pub为公钥

二、添加公钥

本质上就是将公钥的内容追加到目标服务器的 ~/.ssh/authorized_keys文件中

三、验证 

ssh -o StrictHostKeyChecking=no root@目标服务器ip地址

-o StrictHostKeyChecking=no : 去掉对主机的验证

脚本内容

#! /bin/bash 
key="公钥中的内容"
cd ~ 
mkdir -p .ssh 
cd .ssh
touch authorized_keys
if cat 'authorized_keys' | grep "root@gitlab.dev" > /dev/null
then
 echo "此服务器已初始化完成,无需再次初始化"
else
 echo $key>>authorized_keys
fi

其中  root@gitlab.dev 为公钥末尾信息,该行用于判断该用户及该服务器是否已被添加到免密登录名单中

将脚本拷贝到目标服务器,执行脚本

sh 脚本名称.sh

 

 

### 回答1: 在Linux服务器之间实现免密传输文件可以使用SSH(Secure Shell)协议和两台服务器之间的密钥认证。 首先,在服务器A上生成钥和私钥对。可以使用以下命令生成: ``` ssh-keygen -t rsa ``` 这将在~/.ssh目录下生成id_rsa和id_rsa.pub文件,其中id_rsa为私钥,id_rsa.pub为钥。 然后,在服务器B上创建一个.ssh目录,并将服务器A生成的钥复制到服务器B的~/.ssh/authorized_keys文件中。 ``` mkdir ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/authorized_keys 将服务器A生成的钥复制到authorized_keys中保存退出。 ``` 接下来,将服务器B的钥复制到服务器A的authorized_keys中,以实现双向的免密传输。 最后,确保服务器A和服务器B的.ssh目录的权限设置为700,authorized_keys文件的权限设置为600,以确保只有拥有者有读写权限。 现在,当从服务器A到服务器B传输文件时,就不再需要输入密码。可以使用以下命令: ``` scp file user@serverB:/path/to/destination ``` 其中,file是要传输的文件,user是服务器B的用户名,serverB是服务器B的IP地址或域名,/path/to/destination是文件传输到服务器B的目标路径。 通过上述步骤,我们成功实现了Linux服务器之间的免密传输文件。 ### 回答2: 在Linux服务器之间实现免密传输文件可以通过使用SSH密钥对来实现。下面是具体的步骤: 1. 在源服务器上生成SSH密钥对。可以使用`ssh-keygen`命令来生成密钥对,该命令会生成钥和私钥文件。 2. 将钥文件拷贝到目标服务器上。可以使用以下命令将钥文件拷贝到目标服务器上: ``` ssh-copy-id -i <钥文件> <目标服务器用户名>@<目标服务器IP地址> ``` 3. 输入目标服务器密码进行验证,然后钥文件将被自动拷贝到目标服务器的`~/.ssh/authorized_keys`文件中。 4. 现在可以在源服务器上使用`scp`命令进行免密传输文件到目标服务器。 ``` scp <文件路径> <目标服务器用户名>@<目标服务器IP地址>:<目标路径> ``` 5. 这样,文件将被安全地传输到目标服务器上,而无需再次输入密码。 注意:为了确保安全性,私钥文件应该妥善保管,并限制访问权限。此外,还可以通过禁用密码登录来进一步加强服务器的安全性。 ### 回答3: 在Linux服务器之间实现免密传输文件,可以通过使用SSH密钥对的方式来实现。 首先,需要在发送文件的服务器上生成一对SSH密钥(钥和私钥)。这可以通过运行`ssh-keygen`命令来完成。在执行命令时,可以选择保存密钥的位置及密钥的名称。默认情况下,钥和私钥会保存在用户的家目录的.ssh文件夹中。 然后,将钥复制到接收文件的服务器上。可以通过运行以下命令将钥复制到目标服务器: ``` ssh-copy-id username@remote_server ``` 其中,`username`是目标服务器的用户名,`remote_server`是目标服务器的IP地址或域名。在执行命令时,需要提供目标服务器的登录密码。 接下来,验证是否成功免密传输文件。可以通过运行以下命令来登录到目标服务器: ``` ssh username@remote_server ``` 这次登录时,将不会要求输入密码。 最后,可以使用`scp`命令在服务器之间进行免密传输文件。例如,要将本地文件`file.txt`传输到目标服务器上: ``` scp file.txt username@remote_server:/path/to/destination ``` 其中,`/path/to/destination`是目标服务器上保存文件的路径。 通过上述步骤,就可以实现Linux服务器之间的免密传输文件了。这种方法提供了更高的安全性,同时减少了每次传输文件时需要手动输入密码的麻烦。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值