Billchenchina 标签 联系 朋友们

SSH Hacks

Posted by Billchenchina on January 1, 2021
标签: blog ssh

我们通常使用 SSH 进行远程服务器控制,但是似乎都是很 simple,很 naive 的东西。 这并不 hack,所以这里会介绍一些有点 hack 的东西。

ssh-keygen

  • [-t dsa | ecdsa | ed25519 | rsa]: 密钥种类
  • -F hostname [-f known_hosts_file] [-l]: 搜索给定主机对应密钥
  • -R hostname [-f known_hosts_file]: 在 known_hosts 中删除给定主机

ssh-copy-id

Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

将 ssh 公钥拷贝到目标服务器(的 .ssh/authorized_keys

.ssh/config

这其实不属于 hack,但是确是很多的前提。这里给个模板

Host server
    User billchenchina
    HostName 192.0.2.0
    Port 60022
    IdentityFile /home/billchenchina/.ssh/id_rsa
    ForwardAgent yes
    AddKeysToAgent yes
    PermitLocalCommand no
    ProxyCommand nc -X connect -x 127.0.0.1:8080 %h %p # HTTP Proxy
    # 或
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p # Socks5 Proxy
    ProxyJump billchenchina@192.0.2.254:22
    TCPKeepAlive yes

ssh-agent

之前看到过很多关于 ssh-agent 的好,但是可惜年少轻狂并不懂。这个学期认真搞了一下 ssh-agent:

在笔记本(WSL)上,我的 ssh-agent 是通过在 ~/.bash_profileeval `ssh-agent` 的方式进行加载的。

使用 ssh-agent 能够让我少输几次密钥的密码 XD。

对于 GNOME,gnome-keyring 能够让你在同一次登录时少输多次 ssh-add,也不需要手动管理 ssh-agent 就很香(但是要记得人走锁屏hhh)

检查 ssh-agent 中的密钥:ssh-add -l(fingerprints) 或 ssh-add -L(public key parameters)

删除 ssh-agent 中的密钥:ssh-add -D(Delete all identities)

SSH Forwarding

有三种 forward:local forward、remote forward、dynamic forward。

  • local forward:把指定的服务器+端口映射到本地

    例:ssh -L 8080:192.0.2.1:80 192.0.2.0 时,127.0.0.1:8080 等价于 192.0.2.1:80

  • remote forward:把指定的服务器+端口映射到服务器

    例:ssh -R 8080:192.0.2.1:80 192.0.2.0 时,192.0.2.0:8080 等价于 192.0.2.1:80

  • dynamic forward:在本机建立 SOCKS 服务器 例:ssh -D 1080 192.0.2.0 时,127.0.0.1:1080 为 SOCKS 服务器。

ssh-keyscan

ssh-keyscan [-46cDHv] [-f file] [-p port] [-T timeout] [-t type] [host | addrlist namelist]