public:it:ssh

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
public:it:ssh [2016/01/02 12:08] – 创建 oakfirepublic:it:ssh [2023/05/25 14:42] (当前版本) – [Ubuntu] oakfire
行 6: 行 6:
   * 通过 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]]
行 15: 行 22:
     * 要求 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>
  • public/it/ssh.1451707680.txt.gz
  • 最后更改: 2016/01/02 12:08
  • oakfire