配置文件

配置文件保存了可以连接的服务器,它可能存在的位置:

  • Linux:/home/<username>/.ssh/config
  • Windows:C:\Users\<username>\.ssh\config

文件结构配置:

Host Hostname
    HostName <IP>
    User <username>
    Port <port>
    IdentityFile ~/.ssh/<id_file>

ssh key 生成

ssh-keygen -t ed25519 -C "you@mail"

systemd 服务开启

sudo systemctl enable ssh
sudo systemctl start ssh

scp

从远程复制文件夹到本地:

scp -r user@ip:path ./

配置登录

在允许密码登录的时候,可以通过

ssh-copy-id -i ~/.ssh/id_ed25519 -p <port> <username>@<hostname>

将自己的公钥传到对面,本质上是将 ~/.ssh/id_ed25519.pub 输入到远程的 ~/.ssh/authorized_keys 中,所以也可以手动添加 authorized_keys。

/etc/ssh/sshd_config
PubkeyAuthentication yes   # 允许公钥登录
PasswordAuthentication yes # 允许密码登录
PasswordAuthentication no  # 禁止密码登录(强烈推荐)

查看 ssh 登录日志

Debian/Ubuntu:

sudo journalctl -u ssh.service

Arch Linux:

sudo journalctl -u sshd.service

端口转发

ssh 提供了三种端口转发,分别是

  • 本地转发 -L
  • 远程转发 -R
  • 动态转发 -D

举一些比较实际的例子:

  • -D 可以用来搭建 socks 代理,命令格式为:ssh -D <port> username@ip,其中 port 为本地端口,之后就可以通过 socks5 的方式连接代理了,所有的流量都会通过远程服务器。

端口转发参考资料