如何配置Linux远程登录SSH以实现免密码访问?

avatar
作者
猴君
阅读量:0
在本地计算机生成SSH密钥对,将公钥添加到远程服务器的~/.ssh/authorized_keys文件中。

Linux远程登录SSH免密码配置方法

如何配置Linux远程登录SSH以实现免密码访问?

准备工作

1、确认系统已经安装了SSH:确保两台机器都已安装并启用了SSH服务,可以使用以下命令检查SSH是否已安装:

```sh

rpm -qa | grep ssh

```

如果未安装,可以通过以下命令进行安装:

```sh

yum install ssh

```

2、生成秘钥对:使用ssh-keygen命令生成公钥和私钥,默认情况下,它们存储在/root/.ssh目录下。

```sh

ssh-keygen -t rsa

```

3、拷贝公钥到目标服务器:将生成的公钥(id_rsa.pub)拷贝到目标服务器的~/.ssh/authorized_keys文件中,可以使用ssh-copy-id命令简化这一过程:

```sh

ssh-copy-id -i ~/.ssh/id_rsa.pub <target_username>@<target_hostname>

```

4、验证免密登录:尝试从源机器通过SSH登录到目标机器,无需输入密码即可成功连接。

详细步骤

1、修改主机名和配置文件

使用hostnamectl set-hostname <new_hostname>命令设置主机名。

编辑/etc/hosts文件,添加静态IP与主机名的映射关系。

2、为新用户配置SSH秘钥

分别给两台机器上的luser用户创建.ssh目录,生成SSH秘钥,并将公钥拷贝到另一台机器上。

设置目录权限,确保~/.ssh目录权限为700,authorized_keysid_rsa文件权限为600。

3、指定用户登录其他机器:切换到luser用户,使用SSH命令登录到目标机器。

```sh

su luser

ssh luser@linux02

```

4、多机操作脚本:通过Shell脚本实现一台机器操作多台机器做同样的工作,或实现文件的远程拷贝,示例脚本如下:

```sh

#!/bin/bash

cmd=$

cddirname $0

path_dir=pwd

ips_arr=(cat ${path_dir}/ips)

for ip in "${ips_arr[@]}"; do

cmd_="ssh luser@$ip $cmd"

if eval $cmd_; then echo 'ok'; else echo 'fail'; fi

done

```

5、文件拷贝脚本:实现将一个机器内的文件拷贝到其他机器上,示例脚本如下:

```sh

#!/bin/bash

source_=$1

target=$2

cddirname $0

path_dir=pwd

ips_arr=(cat ${path_dir}/ips)

for ip in "${ips_arr[@]}"; do

cmd_="scp $source_ luser@$ip:$target"

if eval $cmd_; then echo 'ok'; else echo 'fail'; fi

done

```

相关问题与解答

1、Q: 如何确保SSH服务已启动?

A: 可以使用以下命令检查SSH服务状态并启动它:

```sh

systemctl status sshd

systemctl start sshd

```

2、Q: 如果公钥拷贝失败怎么办?

A: 确保目标机器的~/.ssh目录存在,并且有正确的权限,如果目录不存在,可以手动创建并设置权限:

```sh

mkdir -p ~/.ssh

chmod 700 ~/.ssh

```

3、Q: 如何撤销SSH免密码登录?

A: 删除目标机器上的~/.ssh/authorized_keys文件中的相关公钥条目,或者直接删除该文件并重新生成新的SSH密钥对。

各位小伙伴们,我刚刚为大家分享了有关“linux远程登录ssh免密码配置方法”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!