--- tags: Linux --- # SSH 連線 [](https://hackmd.io/Ih0Nd3NzT6aCkACHfoG8uQ) ## Linux ### 1. 生成 RSA 密鑰 ```bash ssh-keygen -t rsa ``` ### 2. 複製密鑰到目標 server (免密碼登入) + #### 方法1 ```bash # 複製 id_rsa.pub 到目標 server 的 /home/user scp id_rsa.pub user@remote_server_IP:/home/user # 登入 SSH ssh user@remote_server_IP # 將密鑰複製到 /home/user/.ssh/authorized_keys cat /home/user/id_rsa.pub >> .ssh/authorized_keys ``` + #### 方法2 ```bash # 將以上三步驟合為一步驟 ssh-copy-id -i .ssh/id_rsa.pub user@remote_server_IP ``` ## Windows ### 1. 從 Windows SSH 連線到其他主機 + 跟上面的方法一樣 ### 2. 從其他主機 SSH 連線到 Windows 1. 要先安裝 OpenSSH 伺服器 > 開始 > 設定 > 應用程式 > 應用程式與功能 > 選用功能 > 查看是否已經安裝 OpenSSH 伺服器,沒安裝就到最上方有 > 新增功能,裡面搜尋 :::danger 若沒安裝 OpenSSH,在別台主機連線時 ```bash ssh user@remote_server_IP # ssh: connect to host <remote_server_IP> port 22: Connection refused ``` ::: 2. 以管理員身分,使用 PowerShell ```bash # 停止 ssh 伺服器 Stop-Service sshd # 啟動 ssh 伺服器 Start-Service sshd # ssh 服務自動啟動 Set-Service -Name sshd -StartupType 'Automatic' # 查看狀態 Get-NetFirewallRule -Name *ssh* ``` 會顯示以下訊息代表已經啟動 ```= Name : OpenSSH-Server-In-TCP DisplayName : OpenSSH SSH Server (sshd) Description : Inbound rule for OpenSSH SSH Server (sshd) DisplayGroup : OpenSSH Server Group : OpenSSH Server Enabled : True Profile : Any Platform : {} Direction : Inbound Action : Allow EdgeTraversalPolicy : Block LooseSourceMapping : False LocalOnlyMapping : False Owner : PrimaryStatus : OK Status : 已從存放區成功剖析規則。 (65536) EnforcementStatus : NotApplicable PolicyStoreSource : PersistentStore PolicyStoreSourceType : Local ``` 3. 可以開始使用```ssh user@remote_server_IP```連線 :::danger 若不知道 Windows user Name是什麼,可以使用 ```bash ssh-keygen # Generating public/private rsa key pair. # Enter file in which to save the key (C:\Users\Lenovo/.ssh/id_rsa): ``` ```Lenovo```就是我的 user Name ::: 4. 複製密鑰到目標 server (免密碼登入) :::danger 不可使用```ssh-copy-id -i .ssh/id_rsa.pub user@remote_server_IP```將密鑰放到 Windows 中,因為系統指令不同 ::: ```bash # 將密鑰傳送到 Windows 的桌面 scp ~/.ssh/id_rsa.pub user@remote_server_IP:"C:/Users/user/Desktop" # 登入 ssh user@remote_server_IP cd C:/Users/user/Desktop # 密鑰加入認證 type ./id_rsa.pub >> C:/Users/user/.ssh/authorized_keys ``` :::warning + 如果還是無法免密碼登入,就到```C:\ProgramData\ssh```編輯```sshd_config```檔案,把下面兩行註解起來 ``` # Match Group administrators # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys ``` + 接著重新啟動 ssh 服務 ::: ### SSH 使用 ```bash # 到遠端執行 python ssh user@remote_server_IP python # 目前目錄下的 test.py 放入到遠端執行 ssh user@remote_server_IP python < test.py # 執行遠端 test.py 檔案 ssh user@remote_server_IP "python /home/user/Desktop/test.py" # 遠端執行並在遠端顯示窗口 ssh user@remote_server_IP "export DISPLAY=:0; python /home/user/Desktop/test.py" # 複製檔案到遠端桌面 scp ./test.py user@remote_server_IP:/home/user/Desktop # 複製 a.py, b.py 到遠端桌面 scp {a,b}.py user@remote_server_IP:/home/user/Desktop ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.