ssh 服务
ssh(Secure Shell)命令用于安全地远程登录到另一台计算机,并执行命令和传输文件。ssh 提供了加密的通信通道,确保数据传输的安全性。
ssh [选项] [用户@]主机 [命令]
常用选项
- -V:显示 ssh 版本信息。
- -v:增加调试信息的详细程度,最多可以使用三次(-v -v -v)。
- -i:指定用于身份验证的私钥文件。
- -p:指定远程主机的 SSH 服务端口(默认为 22)。
- -l:指定登录用户名。
- -X 或 -Y:启用 X11 转发,用于图形界面应用程序。
- -N:不执行远程命令,仅建立连接(常用于端口转发)。
- -f:在后台运行 ssh。
- -C:启用压缩。
- -o:指定配置选项。
- -L:本地端口转发。
- -R:远程端口转发。
- -D:动态端口转发(SOCKS 代理)。
一、启动服务
sudo systemctl start ssh 命令用于启动 SSH 服务,使得其他设备可以通过 SSH 协议连接到这台主机
systemctl status ssh 检测是否开启 ssh 服务
二、连接主机
- 基本用法
ssh user@hostname
user:远程主机的用户名。 hostname:远程主机的地址(可以是 IP 地址或主机名)。
-
指定端口
ssh -p 2222 user@hostname-p 2222:指定远程主机的 SSH 服务端口为 2222 -
使用私钥文件
ssh -i /path/to/private_key user@hostname -
多跳连接
ssh -t user1@host1 ssh user2@host2-t:强制分配一个伪终端,用于多跳连接。 -
代理命令
ssh -o ProxyCommand="nc %h %p" user@hostname
-o ProxyCommand="nc %h %p":使用 nc(Netcat)作为代理命令。
-i /path/to/private_key:指定用于身份验证的私钥文件。
三、配置文件
- /etc/ssh/sshd_config
/etc/ssh/sshd_config是 SSH 服务器(sshd)的配置文件,用于控制 SSH 服务的行为。这个文件包含了许多配置选项,可以通过编辑这些选项来调整 SSH 服务的各种行为 - Port
描述:指定 SSH 服务监听的端口号。 默认值:22 eg : Port 2222
- ListenAddress
描述:指定 SSH 服务监听的 IP 地址。可以指定多个地址,每行一个。
默认值:监听所有可用的 IP 地址
eg:
ListenAddress 0.0.0.0
ListenAddress ::1
- HostKey
描述:指定 SSH 服务使用的主机密钥文件。
默认值:通常包括 ssh_host_rsa_key、ssh_host_dsa_key、ssh_host_ecdsa_key 和 ssh_host_ed25519_key
eg:HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
-
PermitRootLogin
描述:控制是否允许 root 用户通过 SSH 登录。
默认值:prohibit-password
可选值:yes:允许 root 登录no:禁止 root 登录without-password:允许 root 使用公钥认证登录,但不允许密码登录prohibit-password:允许 root 使用公钥认证登录,但不允许密码登录
eg:PermitRootLogin no -
PasswordAuthentication
描述:控制是否允许使用密码进行身份验证。
默认值:yes
可选值:
yes:允许密码认证
no:禁止密码认证
eg:PasswordAuthentication no
- ChallengeResponseAuthentication
描述:控制是否允许使用挑战-响应认证机制。
默认值:yes
可选值:
yes:允许挑战-响应认证
no:禁止挑战-响应认证
eg:ChallengeResponseAuthentication no
- PubkeyAuthentication
描述:控制是否允许使用公钥进行身份验证。
默认值:yes
可选值:
yes:允许公钥认证
no:禁止公钥认证
eg:PubkeyAuthentication yes
- AuthorizedKeysFile
描述:指定公钥文件的位置。
默认值:%h/.ssh/authorized_keys
eg:AuthorizedKeysFile %h/.ssh/authorized_keys
四、客户端配置
hash knownHosts yes
在 SSH 客户端配置文件中,HashKnownHosts 选项用于控制是否对 known_hosts 文件中的主机名和 IP 地址进行哈希处理。哈希处理可以增强安全性,因为即使 known_hosts 文件被泄露,攻击者也无法直接从中获取实际的主机名或 IP 地址。
-
客户端配置文件 SSH 客户端的配置文件通常位于
~/.ssh/config,每个用户可以有自己的配置文件。系统范围的配置文件位于/etc/ssh/ssh_config。 -
配置
HashKnownHosts要启用 HashKnownHosts 选项,你需要在~/.ssh/config文件中添加或修改相应的配置。eg:
- 打开配置文件:
nano ~/.ssh/config - 添加或修改
HashKnownHosts选项:
- 打开配置文件:
# ~/.ssh/config
Host *
HashKnownHosts yes
Host *:表示此配置适用于所有主机。
HashKnownHosts yes:启用对 known_hosts 文件中的主机名和 IP 地址进行哈希处理。
-
保存并应用配置
- 保存配置文件:编辑完配置文件后,保存并退出编辑器。
- 测试配置:
ssh -o HashKnownHosts=yes user@hostname你也可以直接使用-o选项在命令行中临时启用HashKnownHosts。
-
配置说明
HashKnownHosts yes:启用哈希处理。HashKnownHosts no:禁用哈希处理(默认值)。 -
nano 退出命令 保存更改并退出: 按
Ctrl + O(写入文件,即保存)。 按 Enter 确认保存。 按Ctrl + X退出nano。 不保存更改并退出: 按Ctrl + X。 当提示是否保存修改时,按N(不保存)。 -
远程拷贝,scp
scp(Secure Copy)命令用于在本地和远程主机之间安全地复制文件。scp 使用 SSH 协议进行加密传输,确保数据的安全性 scp [选项] [源文件] [目标文件] 常用选项: -P:指定远程主机的 SSH 服务端口(默认为 22)。-p:保留文件的修改时间、访问时间和模式。
-q:静默模式,不显示传输进度。
-r:递归复制目录。
-C:启用压缩。
-i:指定用于身份验证的私钥文件。
-v:增加调试信息的详细程度。
eg:远程主机1.2.1.2上的/home/kali/.bashrc文件复制到本地当前目录下的 ks文件
scp root@1.2.1.2:/home/kali/.bashrc ks
解释
root@1.2.1.2:指定远程主机的用户名和IP地址
/home/kali/.bashrc:远程主机上的源文件路径
- 将本地文件
passwd复制到远程主机的/home/kali目录下scp -p passwd root@127.0.0.1:/home/kali/
详细解释
scp:命令本身,用于安全复制文件。
-p:保留文件的修改时间、访问时间和模式。
passwd:本地文件的路径。
root@127.0.0.1:/home/kali/:远程主机的用户名,IP 地址和目标路径。