配置文件
配置文件保存了可以连接的服务器,它可能存在的位置:
- 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 的方式连接代理了,所有的流量都会通过远程服务器。