您的位置:

SSH互信的详细解释与配置

一、SSH互信配置

在一个分布式的系统中,需要在不同的机器之间进行通信和文件的传输,SSH互信是一个很好的工具。它可以让某一个机器上的用户能够在无需输入密码的情况下,登录另一个远程机器。

首先,在每个机器上都需要安装SSH(server/client),这里以Ubuntu系统为例(以下命令需在终端中执行)

sudo apt-get update
sudo apt-get install openssh-server

安装完成后,需要修改/etc/ssh/sshd_config文件:

sudo vim /etc/ssh/sshd_config

将PasswordAuthentication改为no

PasswordAuthentication no

重启SSH服务:

sudo service ssh restart

配置完成后,在A机器上生成公钥

ssh-keygen -t rsa

之后一直按Enter,如果遇到要输入密码的地方,可以直接按Enter,表示不用密码。

生成完成后,可以使用ssh-copy-id命令将公钥复制到B机器的authorized_keys文件中,以此建立两台机器之间的SSH信任关系。

ssh-copy-id -i ~/.ssh/id_rsa.pub user@B_server_IP

其中user为B机器上的用户名,B_server_IP是B机器的IP地址。

二、SSH互信公钥

SSH连接时,密钥将会被用来识别客户端和服务器,以确定用户是否有权限访问远程主机。公钥配对是SSH连接的关键,它允许安全地连接到远程主机而不需要提供密码。

在上面的配置中,使用ssh-keygen命令生成公钥,其中-rsa选项是用来指定使用RSA密钥算法,-t指定密钥类型,其默认为rsa。

而SSH互信中默认使用的公钥文件名是id_rsa.pub,如果需要自己指定文件名可以用-o选项

ssh-keygen -t rsa -f ~/.ssh/my_key_rsa

然后把公钥文件my_key_rsa.pub放到对应的机器的~/.ssh/authorized_keys文件中。

三、SSH互信失败

在进行SSH互信的过程中,可能会遇到不成功的情况,下面列出几个常见的失败情况的处理方法。

1、未知主机

当使用SSH连接远程机器时,如果出现如下提示“Warning: Permanently added...",表明第一次SSH连接将会添加目标主机的公钥到本地客户端,这个过程被称为known_hosts文件的更新。

但是如果在该主机重装系统、更改IP或指定了新主机名,那么就会在连接时出现下面的错误:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

解决方法是使用ssh-keygen命令更新known_hosts文件,如下所示:

ssh-keygen -R server_IP

示例为删除server_IP主机在known_hosts文件中的key。

2、权限不足

在A机器上生成公钥后,需要用 ssh-copy-id 命令将公钥(id_rsa.pub或者指定的文件)复制到B机器上的 ~/.ssh/authorized_keys 文件。如果在操作中出现权限错误,则可以使用以下命令授予当前登录用户的 /.ssh目录和 authorized_keys 文件所在目录的相应权限:

chmod -R 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

四、SSH互信连接机器

SSH互信建立完成后,可以直接连接远程机器,命令格式如下:

ssh remote_username@remote_ip_address

其中,remote_username为远程机器上的用户名,remote_ip_address为远程机器的IP地址。

五、SSH互信如何测试

可以使用ssh -v选项查看debug信息,以确认SSH互信配置是否正确。

ssh remote_username@remote_ip_address -v

其中-v参数用来显示详细的debug信息,如果SSH互信配置正确,会看到类似下面的输出信息:

debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-256 blen 149
debug1: Authentication succeeded (publickey).

六、SSH互信配置后可以执行shell

SSH互信配置完成后,可以直接在本地机器上执行远程机器shell命令:

ssh remote_username@remote_ip_address command

其中command是要执行的命令,例如:

ssh user@192.168.1.100 ls

用来在远程机器上查看当前目录下的文件列表。

七、SSH信任配置选取

这里的配置是指选择要信任哪些机器,可以通过/etc/ssh/ssh_config文件进行添加。

以某一个机器为例,配置文件如下:

Host specific_machine_alias
HostName remote_ip_address
User remote_username
IdentityFile ~/.ssh/id_rsa

上述配置信息意味着,在连接specific_machine_alias时,连接这台机器的用户名是remote_username,使用的密钥是~/.ssh/id_rsa,并且远程主机的IP地址是remote_ip_address。

八、总结

以上,我们对SSH互信做了详细的阐述,包括SSH互信配置、SSH互信公钥、SSH互信失败、SSH互信连接机器、SSH互信如何测试、SSH互信配置后可以执行shell、SSH信任配置选取等方面。希望这篇文章能够帮助大家更好地使用SSH互信,提高工作效率。