SSH远程登入神器的初步使用

SSH Usage

简介

SSH是安全shell的缩写,提供加密传输访问远程服务器的功能。 SSH几乎是所有类似UNIX系统远程登入的方式,当前的Windows 10/11 已经集成了SSH客户端可选组件。 SSH同时支持者scp、git、https、vpn等很多应用。

用法

  • 直接使用

    • ssh 用户名@目标主机:端口
    • 用户名和当前用户名相同可省略
    • 目标主机可以是ip或域名
    • 端口默认22可不写
  • 配置密钥访问

    • 生成密钥对 ssh-keygen
    • 拷贝公钥到目标主机 ssh-copy-id
    • 配置使用的密钥对
  • 端口转发

    • 本地转发 LocalForward
      • -L [本地主机:]本地主机端口:远程网络主机:远程网络主机端口
      • 例如 ssh -L 0.0.0.0:30000:host2:8000 user@host1
      • 这条命令将host2的8000端口映射到本地的30000端口前提是待登录主机host1上可以正常连接到host2的80端口
    • 远程转发 RemoteForward
      • -R [登录主机:]登录主机端口:本地网络主机:本地网络主机端口
      • 例如 ssh -R 0.0.0.0:8080:host2:80 user@host1
      • 这条命令将host2的80端口映射到待登录主机host1的8080端口前提是本地主机可以正常连接host2的80端口
    • 动态转发 DynamicForward
      • -D [本地主机:]本地主机端口
      • ssh -D 0.0.0.0:50000 user@host1
      • 这条命令创建了一个SOCKS代理(默认127.0.0.1)通过该SOCKS代理发出的数据包将经过host1转发出去
  • 专门复制文件

    • scp [-4/-6] [-r] [-P 端口号] 源地址 目的地
    • 范例
      • scp -r 文件夹 user@1.2.3.4:~
      • scp -6 -P 22 文件 user@[I:P::v:6]:~

配置文件

客户端

  • 文件位置
    • 默认在 ~/.ssh/config
    • Windows/Linux/MacOS同样
  • 有一些公共配置
    • HashKnownHosts 散列记住的主机信息,默认yes,建议no以便于手工维护known_hosts文件
  • 每个服务器各是一段配置,常用配置项目如下
    • Host 服务器简称
    • User 登陆用户名,默认当前用户名
    • Hostname 服务器地址
    • Port 服务器端口,默认22
    • IdentityFile 需要使用的密钥,相对路径从执行命令的位置为基准
    • LocalForward 端口转发本地
    • RemoteForward 端口转发远端
    • ProxyCommand 应用代理额外命令
  • 范例
1
2
3
4
5
6
7
Host my_server
	User root
	Hostname 10.11.12.13
	Port 22
	IdentityFile ~/.ssh/id_rsa
	LocalForward 30000 localhost:30000
	RemoteForward 8000 localhost:8000

服务端

  • 文件位置
    • 类Unix系统通常在/etc/ssh/sshd_config
    • Windows系统一般不使用SSH,而是RDP远程桌面。
  • 配置项
    • 文件中有详细的注释和范例
    • 不建议修改服务端的配置

技巧

  • 查看服务器公钥指纹 ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
    • 首次连接一台服务器的时候会询问是否接受公钥,显示的指纹可以通过这条命令查看。
    • 核对指纹可以避免中间人攻击。
  • 通过socks5代理 ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' my_server
  • 开启socks5代理并显示连接信息 ssh -v -D 1080 my_server
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy