后一修订版 | 前一修订版 |
public:it:ssh [2016/01/02 12:08] – 创建 oakfire | public:it:ssh [2023/05/25 14:42] (当前版本) – [Ubuntu] oakfire |
---|
* 通过 key 登陆: | * 通过 key 登陆: |
* 客户端生成私钥与公钥 ''ssh-keygen -t rsa'' | * 客户端生成私钥与公钥 ''ssh-keygen -t rsa'' |
* 把公钥加到服务端的 ''~/.ssh/authorized_keys''文件里, 或在客户端使用命令:''ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostip'' | * 把公钥加到服务端的 ''~/.ssh/authorized_keys''文件里, 或在客户端使用命令:<code bash>ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostip</code> |
| * 禁用密码登录: |
| * 编辑''/etc/ssh/sshd_config'',设置此项为no <code>PasswordAuthentication no</code> |
| * 重启 ''sshd'' 服务 |
| |
| * 欢迎词:动态生成后位于''cat /run/motd.dynamic''. |
| * 彩色标题词:可先安装''sudo apt install figlet toilet'',再编辑''/etc/update-motd.d/00-header'', 添加 ''toilet -f standard -F metal oakfire''。 |
| ===== Tips ===== |
| * 如果 openssh 版本[[https://www.openssh.com/txt/release-8.8|不低于 8.8]], 有可能[[https://www.openssh.com/txt/release-8.2|禁用 RSA-1 算法]]导致 key 失效,详见 [[https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html| 此说明]], 在参数添加 ''-vvvv'' 开启日志的ssh 中可见 <code>debug1: send_pubkey_test: no mutual signature algorithm</code>, 解决办法是用 ed25519 来生成公私钥 <code bash>ssh-keygen -t ed25519 -C "your_email@example.com"</code> |
===== Using SSH agent forwarding ===== | ===== Using SSH agent forwarding ===== |
* 远程使用 SSH 时,直接使用本地的 key 的方法: [[https://developer.github.com/guides/using-ssh-agent-forwarding/|using ssh agent forwarding]] | * 远程使用 SSH 时,直接使用本地的 key 的方法: [[https://developer.github.com/guides/using-ssh-agent-forwarding/|using ssh agent forwarding]] |
* 要求 B 的 ''sshd_config''开启选项''AllowAgentForwarding'' | * 要求 B 的 ''sshd_config''开启选项''AllowAgentForwarding'' |
* A => B 时,使用''ssh -A example.com'' 来手动 agent forwarding; | * A => B 时,使用''ssh -A example.com'' 来手动 agent forwarding; |
* 或者在配置里配置登陆 B 时自动开启 agent forwarding;<code> | * 或者在配置里配置登陆 B 时自动开启 agent forwarding;<code bash> |
Host example.com | Host example.com |
ForwardAgent yes | ForwardAgent yes |
</code> | </code> |
| * 如果在 windows 上使用 ssh 登陆到 A,然后想进行 A => B => C 的 agent forwarding, 在 ''ssh-add''这一步时会提示一个错误(忘了叫什么),stackoverflow 有个[[http://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent|高票解答]]能解决此问题: 执行<code bash> eval `ssh-agent -s` </code> |
| |
| |
| ===== 使用 ssh 转发端口 ===== |
| |
| * [[http://blog.creke.net/722.html|SSH隧道与端口转发及内网穿透]]<code bash> |
| ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host |
| ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host |
| ssh -C -f -N -g -D listen_port user@Tunnel_Host |
| </code> |
| |
| ===== 通过代理进行 ssh 访问 ===== |
| * Windows: 编辑 ''C:\Users\<username>\.ssh\config'' 文件,添加 <code> |
| Host <host> |
| ProxyCommand connect -S 127.0.0.1:1080 %h %p |
| </code> 其中 ''<host>'' 可为 ''*'' 表示不限目标ip, 或者可设置为特定的 ip 或域名,比如 ''github.com''; 第二行的''127.0.0.1:1080'' 可改为实际代理地址; ''connect''为git mingw64自带, 所以在git bash 里可用, 如果没有则需要自行下载 connect.exe 放到 PATH 路径。 |
| * Linux:编辑 ''~/.ssh/config'', 添加<code> |
| Host <host> |
| ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p |
| </code> |
| * 如果只是单次使用,可直接在执行命令时添加: ''ssh <user>@<host> -o "ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p"'' |
| ===== Generate RSA key ===== |
| <code bash> |
| # 生成 RSA 私钥(传统格式的) |
| openssl genrsa -out rsa_private_key.pem 1024 |
| |
| # 生成 RSA 公钥 |
| openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem |
| |
| # 将传统格式的私钥转换成 PKCS#8 格式的 |
| openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt |
| </code> |