
* format: fix markdown * update: fix markdown * update: fix cron problems * update: delete .markdownlintignore * update * chore: add tab -> 4 space * chore: fix tab -> 2 in the .editorconfig
254 lines
3.8 KiB
Markdown
254 lines
3.8 KiB
Markdown
SSH 备忘清单
|
||
====
|
||
|
||
此快速参考备忘单提供了使用 SSH 的各种方法。
|
||
|
||
入门
|
||
----
|
||
|
||
### 连接
|
||
|
||
连接到服务器(默认端口 22)
|
||
|
||
```shell
|
||
$ ssh root@192.168.1.5
|
||
```
|
||
|
||
在特定端口上连接
|
||
|
||
```shell
|
||
$ ssh root@192.168.1.5 -p 6222
|
||
```
|
||
|
||
通过 pem 文件连接(0400 权限)
|
||
|
||
```shell
|
||
$ ssh -i /path/file.pem root@192.168.1.5
|
||
```
|
||
|
||
请参阅:[SSH 权限](./chmod.md#ssh-权限)
|
||
|
||
### 执行
|
||
|
||
执行远程命令
|
||
|
||
```shell
|
||
$ ssh root@192.168.1.5 'ls -l'
|
||
```
|
||
|
||
调用本地脚本
|
||
|
||
```shell
|
||
$ ssh root@192.168.1.5 bash < script.sh
|
||
```
|
||
|
||
从服务器压缩和下载
|
||
|
||
```shell
|
||
$ ssh root@192.168.1.5 "tar cvzf - ~/source" > output.tgz
|
||
```
|
||
<!--rehype:className=wrap-text -->
|
||
|
||
### SCP
|
||
<!--rehype:wrap-class=row-span-2-->
|
||
|
||
从远程复制到本地
|
||
|
||
```shell
|
||
$ scp user@server:/dir/file.ext dest/
|
||
```
|
||
|
||
两台服务器之间的副本
|
||
|
||
```shell
|
||
$ scp user@server:/file user@server:/dir
|
||
```
|
||
|
||
从本地复制到远程
|
||
|
||
```shell
|
||
$ scp dest/file.ext user@server:/dir
|
||
```
|
||
|
||
复制整个文件夹
|
||
|
||
```shell
|
||
$ scp -r user@server:/dir dest/
|
||
```
|
||
|
||
复制文件夹中的所有文件
|
||
|
||
```shell
|
||
$ scp user@server:/dir/* dest/
|
||
```
|
||
|
||
从服务器文件夹复制到当前文件夹
|
||
|
||
```shell
|
||
$ scp user@server:/dir/* .
|
||
```
|
||
|
||
### 配置位置
|
||
|
||
文件路径 | 说明
|
||
:-|-
|
||
`/etc/ssh/ssh_config` | 系统范围的配置
|
||
`~/.ssh/config` | 用户特定的配置
|
||
`~/.ssh/id_{type}` | 私钥
|
||
`~/.ssh/id_{type}.pub` | 公钥
|
||
`~/.ssh/known_hosts` | 登录主机
|
||
`~/.ssh/authorized_keys` | 授权登录密钥
|
||
|
||
### SCP 选项
|
||
|
||
选项 | 说明
|
||
:-|-
|
||
scp `-r` | 递归复制整个目录
|
||
scp `-C` | 压缩数据
|
||
scp `-v` | 打印详细信息
|
||
scp `-P` 8080 | 使用特定端口
|
||
scp `-B` | 批处理模式_(防止密码)_
|
||
scp `-p` | 保留时间和模式
|
||
|
||
### 配置示例
|
||
|
||
```toml
|
||
Host server1
|
||
HostName 192.168.1.5
|
||
User root
|
||
Port 22
|
||
IdentityFile ~/.ssh/server1.key
|
||
```
|
||
|
||
通过别名启动
|
||
|
||
```shell
|
||
$ ssh server1
|
||
```
|
||
|
||
请参阅:完整 [配置选项](https://linux.die.net/man/5/ssh_config)
|
||
|
||
### ProxyJump
|
||
|
||
```shell
|
||
$ ssh -J proxy_host1 remote_host2
|
||
```
|
||
|
||
```shell
|
||
$ ssh -J user@proxy_host1 user@remote_host2
|
||
```
|
||
<!--rehype:className=wrap-text -->
|
||
|
||
多次跳跃
|
||
|
||
```shell
|
||
$ ssh -J user@proxy_host1:port1,user@proxy_host2:port2 user@remote_host3
|
||
```
|
||
<!--rehype:className=wrap-text -->
|
||
|
||
### ssh-copy-id
|
||
|
||
```shell
|
||
$ ssh-copy-id user@server
|
||
```
|
||
|
||
复制到别名服务器
|
||
|
||
```shell
|
||
$ ssh-copy-id server1
|
||
```
|
||
|
||
复制特定密钥
|
||
|
||
```shell
|
||
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
|
||
```
|
||
<!--rehype:className=wrap-text -->
|
||
|
||
SSH keygen
|
||
---------------
|
||
<!--rehype:body-class=cols-5-->
|
||
|
||
### ssh-keygen
|
||
<!--rehype:wrap-class=col-span-2-->
|
||
|
||
```shell
|
||
$ ssh-keygen -t rsa -b 4096 -C "your@mail.com"
|
||
```
|
||
|
||
----
|
||
|
||
| - | - | - |
|
||
|---|------|-------------------------------|
|
||
| | `-t` | [类型](#钥匙类型) 键 |
|
||
| | `-b` | 密钥中的位数 |
|
||
| | `-C` | 提供新评论 |
|
||
|
||
生成带有电子邮件作为注释的 RSA 4096 位密钥
|
||
|
||
### 产生
|
||
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||
|
||
以交互方式生成密钥
|
||
|
||
```shell
|
||
$ ssh-keygen
|
||
```
|
||
|
||
指定文件名
|
||
|
||
```shell
|
||
$ ssh-keygen -f ~/.ssh/filename
|
||
```
|
||
|
||
从私钥生成公钥
|
||
|
||
```shell
|
||
$ ssh-keygen -y -f private.key > public.pub
|
||
```
|
||
|
||
更改评论
|
||
|
||
```shell
|
||
$ ssh-keygen -c -f ~/.ssh/id_rsa
|
||
```
|
||
|
||
更改私钥密码
|
||
|
||
```shell
|
||
$ ssh-keygen -p -f ~/.ssh/id_rsa
|
||
```
|
||
|
||
### 钥匙类型
|
||
|
||
- rsa
|
||
- ed25519
|
||
- dsa
|
||
- ecdsa
|
||
|
||
### known_hosts
|
||
<!--rehype:wrap-class=col-span-2-->
|
||
|
||
从 known_hosts 搜索
|
||
|
||
```shell
|
||
$ ssh-keygen -F <ip/hostname>
|
||
```
|
||
|
||
从 known_hosts 中删除
|
||
|
||
```shell
|
||
$ ssh-keygen -R <ip/hostname>
|
||
```
|
||
|
||
### 密钥格式
|
||
|
||
- PEM
|
||
- PKCS8
|
||
|
||
另见
|
||
--------
|
||
|
||
- [OpenSSH 配置文件示例](https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/) _(cyberciti.biz)_
|
||
- [ssh_config](https://linux.die.net/man/5/ssh_config) _(linux.die.net)_
|