Linux实现两台服务器之间ssh连接

环境检查

检查OpenSSL

ssh -V

输入上面的命令,会有如下的返回,即为正常。

OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

继续输入

rpm -qa | grep ssh

出现如下返回,即为正常。(请无视版本号)

openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64

如果这里没有的话,需要进行安装。执行如下命令

yum install openssh-clients
yum install openssh-server

检查SSH服务是否开启

只有在SSH服务开启的状态下,才能远程登录,连接和管理服务器。如果关闭SSH服务,则远程连接客户端无法再连接服务器,但是已连接的客户端可以继续使用。

执行命令查看开启和关闭状态(两条命令均可,系统版本不同命令不同)

systemctl start sshd.service
service sshd status 

active 表示SSH服务是启动的 inactive表示SSH服务已关闭

执行命令 systemctl start sshd.service 或者 service sshd start 启动SSH服务。

执行命令 systemctl stop sshd.service 或者 service sshd stop 启动SSH服务。

执行命令 systemctl restart sshd.service 或者 service sshd restart 重启SSH服务。

执行命令 systemctl enable sshd.service 或者 service sshd enable 设置服务开机自启。

生成公钥和私钥

如在两台服务器(172.30.4.81172.30.4.82)上配置,使得 172.30.4.82 能通过公钥访问 172.30.4.81 的详细步骤,这里假设两台服务器都是基于常见的 Linux 操作系统(如 CentOS、Ubuntu 等):

172.30.4.81(生成公钥和私钥的服务器)上操作

  1. 生成密钥对(如果还未生成的话)
    以要接收连接的用户身份(通常可以是 root 用户或者其他有对应权限的普通用户,这里以 root 为例)登录到 172.30.4.81 服务器,在命令行中执行以下命令来生成 RSA 类型的密钥对(当然也可以选择其他如 DSA 等加密算法类型,不过 RSA 较为常用):

    ssh-keygen -t rsa

运行该命令后,系统会提示你输入保存密钥文件的路径(直接回车可使用默认路径,一般为 /root/.ssh/id_rsa)以及设置密钥的密码(也可以直接回车不设置密码,不过设置密码会更安全些,后续每次使用该私钥连接时需要输入密码来验证)等信息,按照提示依次操作完成即可。

  1. 查看生成的公钥和私钥文件
    生成密钥对后,在默认路径(/root/.ssh/ 目录下,如果前面步骤使用了默认设置的话)会有两个文件:
    • id_rsa:这是私钥文件,需要妥善保管,不能泄露给其他人,它用于后续验证身份。
    • id_rsa.pub:这是公钥文件,其内容将会被添加到要访问的目标服务器(也就是 172.30.4.82)的授权文件中。

复制公钥

172.30.4.82(使用公钥访问的服务器)上操作

  1. 将公钥添加到 172.30.4.81 的授权文件中
    先以合适的用户身份(比如 root 用户,如果有对应权限的话)登录到 172.30.4.82 服务器,然后可以通过以下几种常见方式将 172.30.4.81 上生成的公钥添加到 172.30.4.82 的授权文件中:

    • 手动复制粘贴方式(较简单直观但稍麻烦)
      使用文本编辑器(如 vimnano 等)打开 172.30.4.81 服务器上的公钥文件(/root/.ssh/id_rsa.pub,假设是 root 用户生成的密钥对且使用默认路径),复制其中的内容(公钥内容是一长串字符,类似 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... 这样的格式)。
      接着在 172.30.4.82 服务器上打开 /root/.ssh/authorized_keys 文件(如果该文件不存在,则创建它,创建命令可以是 touch /root/.ssh/authorized_keys),然后将复制的公钥内容粘贴到 authorized_keys 文件的新一行中保存退出即可。
    • 使用 ssh-copy-id 命令(更便捷推荐)
      172.30.4.82 服务器上执行以下命令(假设同样是以 root 用户身份进行操作,且 172.30.4.81 服务器的 root 用户已经生成了密钥对):

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.30.4.81

该命令会自动将指定的公钥文件(这里通过 -i 参数指定了 172.30.4.81 服务器上 root 用户的公钥文件路径 /root/.ssh/id_rsa.pub)内容添加到 172.30.4.82 服务器对应 root 用户的 authorized_keys 文件中,并且会尝试使用密码(如果之前生成密钥对时设置了私钥密码的话,这里就需要输入密码来完成操作)进行连接验证等相关操作,操作成功后,后续就能使用公钥进行无密码登录了(前提是没有私钥密码或者输入正确的私钥密码)。

测试连接

172.30.4.82 服务器上执行以下 SSH 连接命令来测试是否能通过公钥成功访问 172.30.4.81 服务器:

ssh root@172.30.4.81

如果配置正确,此时应该能够直接连接到 172.30.4.81 服务器,而不会再提示输入密码(除非之前生成私钥时设置了密码,那么此时需要输入私钥密码来完成连接)。

通过以上步骤,就能实现 172.30.4.82 通过公钥访问 172.30.4.81 的操作了,在实际应用中,可以根据具体的业务需求和安全策略,对涉及的用户、密钥权限等进行进一步的细化管理和配置优化。

相关推荐
公众号:ITIL之家16 分钟前
自动化运维平台的选型指南:开源与商业化工具对比
运维·开源·自动化
wkd_00719 分钟前
【C++读写.xlsx文件】OpenXLSX开源库在 Ubuntu 18.04 的编译、交叉编译与使用教程
linux·ubuntu·openxlsx·c++写xlsx·开源库编译
kikyo哎哟喂1 小时前
API网关基础知识
运维·服务器·网络
阿里嘎多学长1 小时前
centos怎么安装haproxy
linux·运维·服务器·centos
七灵微1 小时前
进程与线程以及如何查看
linux·系统架构
这个男人是小帅2 小时前
【AutoDL】通过【SSH远程连接】【vscode】
运维·人工智能·pytorch·vscode·深度学习·ssh
无为扫地僧2 小时前
二、windows环境下vscode使用wsl教程
linux
2401_850410832 小时前
LVS简介
运维·nginx·tomcat·lvs
中东大鹅2 小时前
分布式数据存储基础与HDFS操作实践
大数据·linux·hadoop·分布式·hbase
yuanbenshidiaos2 小时前
linux-----进程及基本操作
linux·服务器·网络