--- title: "PuTTY及Raspberry Pi設定SSH agent forwarding" description: "PuTTY及Raspberry Pi設定SSH agent forwarding" # image: https://hackmd.io/screenshot.png tags: SSH,Raspberry Pi,PuTTY # robots: noindex, nofollow langs: zh-Hant --- > 此篇筆記已公開於**HackMD**:[@ShenTengTu/rkwtDACU8](https://hackmd.io/@ShenTengTu/rkwtDACU8) # PuTTY及Raspberry Pi設定SSH agent forwarding 目標:Windows本地端使用PuTTY以SSH驗證的方式登入Raspberry Pi,並設定SSH agent forwarding,讓Raspberry Pi能轉發本地端SSH金鑰到第三方SSH Server(如 GitHub)進行SSH驗證。 ## PuTTY設定 PuTTY的SSH agent為`pageant.exe`,是擁有GUI介面的SSH agent,要啟用代理轉發,要先啟動Pageant。跟Linux的`ssh-agent`類似,必須先將`*.ppk `私鑰加入到Pageant,它會詢問passphrase,並在驗證成功後將金鑰暫時保留在記憶體中。 使用命令列來執行`pageant.exe`自動加載密鑰。 ``` C:\PuTTY\pageant.exe d:\main.ppk d:\secondary.ppk ``` 使用命令列來執行`pageant.exe`自動加載密鑰後,運行另一個程序。 ``` C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe ``` 而PuTTY SSH session必須設置 - SSH > Auth > 啟用"Allow agent forwarding" - 不需額外設定私鑰路徑 可以將PuTTY安裝路徑加到`PATH`環境變數,然後建立包含以下腳本的批次檔`pageant-session.bat`。 ```bat start pageant "%USERPROFILE%\.ssh\your.ppk" -c putty -load %1 ``` 然後執行`./pageant-session.bat "your_ssh_ession"`。 ## Raspberry Pi設定 - 將SSH公鑰內容加入到`~/.ssh/authorized_keys` - 修改`/etc/ssh/ssh_config`設定 ``` Host * ForwardAgent yes ... ``` - 修改`/etc/ssh/sshd_config`設定 ``` ... PubkeyAuthentication yes AllowAgentForwarding yes ... ``` ## 驗證 在PuTTY SSH session下的Raspberry Pi終端: ``` $ echo $SSH_AUTH_SOCK /tmp/ssh-NIEDeNTuAQ/agent.2161 $ ssh -T git@github.com agent key xxxx returned incorrect signature type Hi <UserID>! You've successfully authenticated, but GitHub does not provide shell access. ``` ## 參考 - [Using SSH Agent Forwarding | GitHub Developer Guide](https://developer.github.com/v3/guides/using-ssh-agent-forwarding/) - [Chapter 9: Using Pageant for authentication | PuTTY User Manual](https://www.ssh.com/ssh/putty/putty-manuals/0.68/Chapter9.html)