2025-02-06
编程
00
请注意,本文编写于 81 天前,最后修改于 22 天前,其中某些信息可能已经过时。

目录

安装指南
在Ubuntu/Debian安装
在CentOS安装
在Windows安装
使用方法
常用参数
示例
配置SSH密钥用于远程服务器登录
1. 生成SSH密钥对(如果尚未生成):
3. 登录测试:
1. 生成多个SSH密钥对
2. 管理SSH配置文件
3. 使用配置进行连接
4. 将公钥添加到相应的服务器

SSH(Secure Shell)是一种网络协议,主要用于通过不安全的网络进行安全的远程登录和命令执行。下面是针对Ubuntu/Debian、CentOS和Windows系统安装SSH的指南。

安装指南

在Ubuntu/Debian安装

在基于Debian的Linux发行版如Ubuntu和Debian上,你可以使用APT包管理器来安装OpenSSH。

  1. 打开终端。
  2. 更新软件包列表:
sudo apt update
  1. 安装SSH服务器:
sudo apt install openssh-server
  1. 安装完成后,SSH服务通常会自动启动。如果没有,可以使用以下命令手动启动:
sudo systemctl start ssh

在CentOS安装

在CentOS等基于Red Hat的Linux发行版上,使用YUM或DNF包管理器来安装OpenSSH。

  1. 打开终端。
  2. 使用以下命令安装SSH服务器:
sudo yum install openssh-server

或者对于较新版本的CentOS:

sudo dnf install openssh-server
  1. 启动SSH服务:
sudo systemctl start sshd

在Windows安装

Windows 10及以上版本原生支持SSH客户端和服务器功能。你可以通过“设置”中的“可选功能”来安装它:

  1. 打开“设置” > “应用” > “管理可选功能”。
  2. 点击“添加功能”,找到“OpenSSH 服务器”,然后点击“安装”。

或者,你也可以通过PowerShell以管理员身份运行以下命令来安装:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

安装后,你可以使用Start-Service sshd命令来启动SSH服务,并使用Set-Service -Name sshd -StartupType 'Automatic'确保其随系统启动而自动运行。

如果你需要配置SSH服务,比如更改端口号、禁止root登录等,你需要编辑相应的配置文件,一般位于/etc/ssh/sshd_config(Linux)或C:\ProgramData\ssh\sshd_config(Windows)。修改后记得重启SSH服务使更改生效。

使用方法

SSH(Secure Shell)命令行工具允许用户通过网络安全地远程登录到另一台计算机。使用SSH时,可以通过各种参数来定制连接的行为。以下是一些常用的SSH命令参数及其用途:

常用参数

  • -p <port>:指定远程主机的SSH端口,默认是22。
  • -i <identity_file>:指定用于身份验证的私钥文件路径。
  • -l <login_name>:指定登录使用的用户名。
  • -C:启用数据压缩传输,适合低速网络环境。
  • -X-Y:启用图形界面转发,允许在本地运行远程服务器上的图形程序。
  • -N:不执行远程命令,只进行端口转发。
  • -L [bind_address:]port:host:hostport:本地端口转发,将本地机的某个端口流量转发到远程机器的指定端口上。
  • -R [bind_address:]port:host:hostport:远程端口转发,与-L相反,它将远程机器的端口流量转发到本地机的指定端口上。
  • -D [bind_address:]port:动态应用程序级端口转发,通常用于创建SOCKS代理。

示例

  1. 基本登录
ssh user@hostname
  1. 使用特定端口登录
ssh -p 2222 user@hostname
  1. 使用私钥文件进行身份验证
ssh -i /path/to/private_key user@hostname
  1. 启用图形界面转发
ssh -X user@hostname

ssh -Y user@hostname
  • -X: 启用 "trusted" X11 转发。更安全,但可能限制某些功能。
  • -Y: 启用 "untrusted" X11 转发。给予远程程序更多权限,但可能存在一定的安全风险。

注意

确保服务器上的 SSH 配置允许 X11 转发。检查 /etc/ssh/sshd_config 文件,确保有以下内容:

bash
X11Forwarding yes X11DisplayOffset 10

如果修改了配置文件,请重启 SSH 服务以应用更改:

bash
sudo systemctl restart sshd

提示

图形界面转发可以让我们本地访问远程系统的图形界面,例如firefox的图形界面

  1. 本地端口转发,例如,将本地的8080端口请求转发到远程主机的80端口:
ssh -L 8080:localhost:80 user@hostname
  1. 动态端口转发设置SOCKS代理
ssh -D 1080 user@hostname

这样设置后,你可以在浏览器或其他支持SOCKS代理的应用中配置代理服务器为localhost:1080,以通过SSH隧道安全访问互联网。

配置SSH密钥用于远程服务器登录

部署密钥通常是指设置SSH密钥以实现无密码登录远程服务器

1. 生成SSH密钥对(如果尚未生成):

打开终端并运行以下命令,按照提示操作,可以为默认位置和空口令生成一个新的SSH密钥对。

bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. 复制公钥到远程服务器

使用ssh-copy-id工具可以将你的公钥添加到远程机器上的~/.ssh/authorized_keys文件中。

bash
ssh-copy-id user@remote_host

其中user是你在远程主机上的用户名,remote_host是远程主机的地址。

3. 登录测试

尝试使用SSH登录到远程服务器,检查是否不再需要输入密码。

bash
ssh user@remote_host

配置(多个)SSH密钥用于远程服务器登录

配置多个SSH密钥用于远程服务器登录,通常是因为你需要用不同的密钥访问不同的服务器或同一服务器的不同账户。下面是如何配置和使用多个SSH密钥的步骤:

1. 生成多个SSH密钥对

假设你已经有一个默认的id_rsa密钥,并且现在需要为另一个服务生成一个新的密钥对。

bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_second

这里的-f参数指定了新的密钥文件名(例如id_rsa_second)。你可以根据实际情况修改这个名称。

2. 管理SSH配置文件

为了方便地管理多个SSH密钥,可以编辑或创建~/.ssh/config文件,根据需要添加如下配置:

bash
# 默认配置,适用于第一个服务 Host first-service HostName remote_host_first User your_username_first IdentityFile ~/.ssh/id_rsa # 第二个服务的配置 Host second-service HostName remote_host_second User your_username_second IdentityFile ~/.ssh/id_rsa_second

在这个配置中:

  • Host是一个别名,你可以随意命名,用来简化连接命令。
  • HostName是实际的远程主机地址。
  • User是你在远程主机上的用户名。
  • IdentityFile指定要使用的私钥文件路径。

3. 使用配置进行连接

有了上述配置后,你可以通过以下命令轻松连接到不同的服务器,而无需每次都指定密钥:

bash
# 连接到第一个服务 ssh first-service # 连接到第二个服务 ssh second-service

4. 将公钥添加到相应的服务器

确保每个服务器都有对应的公钥(即.pub文件的内容),可以通过手动复制或者使用ssh-copy-id工具完成。

对于ssh-copy-id,如果你按照上面的配置来使用,可以直接用别名:

bash
# 复制公钥到第一个服务 ssh-copy-id first-service # 复制公钥到第二个服务 ssh-copy-id second-service

如果遇到权限问题或其他错误,请检查目标服务器上的~/.ssh/authorized_keys文件权限是否正确(通常是600),以及~/.ssh目录的权限(通常是700)。

这样,你就能够通过简单的命令管理和使用多个SSH密钥来访问不同的远程服务器了。

请根据具体需求调整上述步骤。如果有任何疑问或遇到问题,请随时告诉我!

文章如有错误,还望留言指正 :: 参考资料
来自ai生成