找回密码
 立即注册
首页 业界区 业界 SSH实现服务器之间免密登录

SSH实现服务器之间免密登录

肇默步 前天 21:05
1、介绍

SSH(Secure Shell)是一种用于计算机之间安全远程登录和其他网络服务的协议,它通过加密通信来确保在不安全的网络中也能安全地传输数据。SSH可以用于登录远程主机、执行命令和管理远程服务器。与Telnet协议不同,SSH提供了强大的加密和身份验证机制,能够有效防止窃听、篡改和伪造身份的攻击。SSH的默认端口是22,它通常与公共密钥加密技术一起使用,可以实现更加安全的身份验证。
2、用途


  • 登录远程服务器,进行系统管理和维护。
  • 通过SCP或SFTP安全地传输文件。
  • 端口转发,实现内网穿透或安全代理。
  • 自动化运维脚本的远程执行。
  • 实现服务器与服务器之间的免密登录。
3、下载

在大多数Linux发行版中,SSH客户端和服务器都已经默认安装好了。如果没有,需要通过以下步骤安装:
查看是否安装 openssh-server
  1. yum list installed | grep openssh-server
复制代码
或者
  1. rpm -qa | grep openssh-server
复制代码
如果没任何输出显示,表示没有安装 openssh-server,通过 yum 命令安装:
  1. yum install openssh-server
复制代码
安装成功后,启动SSH服务:
  1. # 启动
  2. systemctl start sshd
  3. # 开机自启动
  4. systemctl enable sshd
复制代码
其他相关命令
  1. # 查看启动状态
  2. systemctl status sshd
  3. # 重新启动
  4. systemctl restart sshd
  5. # 停止SSH服务
  6. systemctl stop sshd
  7. # 重新加载SSH配置(不中断现有连接)
  8. systemctl reload sshd
  9. # 禁用服务开机自启
  10. systemctl disable sshd
  11. # 查看SSH服务监听的端口
  12. netstat -tnlp | grep sshd
  13. # 查看SSH配置文件
  14. cat /etc/ssh/sshd_config
复制代码
4、免密登录

注意:
如果要在 Linux系统 A服务器 上实现免密登录到 B服务器 ,则需要在A服务器上生成 SSH 密钥对
4.1、创建密钥对

在A服务器上面执行以下命令创建密钥对
  1. ssh-keygen -t rsa -b 4096 -C "remark"
  2. # remark:密钥对公钥备注信息
复制代码
执行成功后,在A服务器的/root/.ssh 目录会生成 id_rsa 私钥文件和 id_rsa.pub 公有文件。如果执行命令的时候设置了生成文件目录,私钥和公钥文件会生成到指定的目录中。
4.2、将公钥复制到服务器端

执行成功后,在A服务器上面执行以下命令,将公钥文件远程拷贝到B服务器 。
  1. ssh-copy-id username@server_ip_or_hostname
  2. # 如果需要加端口号
  3. ssh-copy-id -p 2222 username@server_ip_or_hostname
  4. username # B服务器的用户名称
  5. server_ip_or_hostname # B服务器的访问IP或者代理主机名称
复制代码
如果服务器没有 ssh-copy-id 命令,需要把id_rsa.pub 中的公钥内容进行手动保存到B服务器 的 ~/.ssh/authorized_keys 文件中。
4.3、验证服务器是否添加成功

远程登录到 B服务器 ,在 B服务器 中查看公钥是否拷贝成功。
  1. cat ~/.ssh/authorized_keys
复制代码
4.4、验证登录
  1. ssh username@server_ip_or_hostname
  2. # 如果需要加端口号
  3. ssh -p <port_number> username@server_ip_or_hostname
  4. port_number # B服务器的端口号
  5. username # B服务器的用户名称
  6. server_ip_or_hostname # B服务器的访问IP或者代理主机名称
复制代码
执行命令后,如果不需要输入密码就登录成功,说明ssh免密登录配置成功了。
4.5、设置权限

最后设置一下文件的访问权限,保障密钥数据安全。
  1. # 查看权限:
  2. ls -ld ~/.ssh
  3. ls -l ~/.ssh/authorized_keys
  4. # 在B服务器中设置文件权限
  5. chmod 700 ~/.ssh  # 只有目录拥有者可以访问、修改和进入 .ssh 目录,其他人无法访问,保障密钥安全。
  6. chmod 600 ~/.ssh/authorized_keys # 只有文件拥有者可以读取和修改 authorized_keys 文件,其他人无法访问,防止公钥被窃取或篡改
  7. # 在A服务器中远程操作B服务器进行权限设置
  8. ssh username@server_ip_or_hostname 'chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
复制代码
5、SCP

通过以上 SSH 配置已经实现了服务器免密登录,但是如果需要传输文件怎么办?答案就是可以使用SCP命令进行文件传输。
5.1、介绍

SCP(Secure Copy Protocol)是一个基于 SSH 协议的文件传输工具,用于在本地和远程系统之间或两个远程系统之间安全地复制文件。它可以加密文件传输过程,确保数据的机密性和完整性。SCP 在 Unix、Linux、macOS、Windows 等操作系统中都默认含有,使用 SCP 可以很方便的在各个服务器或者系统之间传输文件,是一种灵活、安全的文件传输工具,以下是SCP的特点:

  • 加密传输:SCP 使用 SSH 协议进行加密,保证数据在传输过程中的安全性。
  • 简单易用:SCP 命令行工具非常直观,可以在一行命令中实现文件的上传和下载。
  • 跨平台:支持在不同操作系统(Linux、macOS、Windows 等)之间传输文件。
5.2、下载安装

在大多数 Linux 和 macOS 系统上,scp 是 openssh 套件的一部分,通常默认安装。如果未安装,可以通过包管理器进行安装。
6、常用命令

scp 命令的基本语法如下:
  1. scp [选项] [源文件路径] [目标路径]
  2. # 远程服务器之间拷贝
  3. scp [选项] [[用户@]源主机:]文件路径 [[用户@]目标主机:]文件路径
复制代码
从本地复制到远程主机
  1. # scp 本地文件 用户名@远程IP:远程路径
  2. scp ~\Desktop\fileDir.zip username@host-ip:/opt/app
  3. # 将本地的 fileDir.zip 文件 拷贝到服务器的 /opt/app 目录下面
  4. username # 服务器用户名
  5. host-ip  # 服务器IP地址
复制代码
从远程主机复制到本地
  1. # scp 用户名@远程IP:远程文件路径 本地路径
  2. scp username@host-ip:/opt/app/prod-application.yml ~/Desktop/
  3. # 将服务器上面的 prod-application.yml 文件拷贝到本地的 Desktop 目录中
  4. username # 服务器用户名
  5. host-ip  # 服务器IP地址
复制代码
从远程服务器复制文件到远程服务器
  1. # scp 用户名@远程IP:远程文件路径 用户名2@远程IP2:远程文件路径
  2. scp user1@remote_host1:/path/to/remote/file.txt user2@remote_host2:/path/to/remote/directory
  3. # 将远程服务器 remote_host1 中的 file.txt 文件拷贝到远程服务器 remote_host2 的 directory 目录中
  4. user1 # 源文件服务器用户名称
  5. remote_host1 # 源文件服务器IP
  6. user2 # 目标文件服务器用户名称
  7. remote_host2 # 目标文件服务器IP
复制代码
7、相关命令

常用选项:

  • -r:递归复制整个目录。
  • -P:指定远程主机的 SSH 端口(注意是大写 P)。
  • -C:启用压缩,提高传输速度(适合传输大文件)。
  • -i:指定 SSH 私钥文件,进行身份验证。
  • -v:启用详细模式,显示传输过程中的调试信息。
递归处理,复制整个目录:
  1. scp -r user@remote_host:/path/on/remote/directory /path/to/local/
复制代码
指定端口:
如果远程主机的 SSH 端口不是默认的 22,可以使用 -P 选项指定端口:
  1. scp -P 2222 user@remote_host:/path/on/remote/file.txt /path/to/local/
复制代码
指定私钥文件进行认证
  1. scp -i /path/to/private_key /home/user/file.txt user@remote_host:/home/user/
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册