linux【ssh服务+远程拷贝】

649 阅读5分钟

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 地址和目标路径。