一、設置SSH密鑰對,實現記住密碼
要避免每次使用scp
或ssh
時都輸入密碼,你可以設置SSH密鑰對(一對公鑰和私鑰),并將公鑰添加到遠程服務器上。這樣,你的系統可以通過密鑰自動驗證身份,而無需手動輸入密碼。以下是設置SSH密鑰對并配置免密碼登錄的步驟:
1. 在本地計算機上生成SSH密鑰對
如果你還沒有SSH密鑰對,可以在你的本地機器上生成一個。在Git Bash中運行以下命令:
ssh-keygen -t rsa -b 4096
-t rsa
: 指定密鑰類型為RSA。-b 4096
: 指定密鑰的位數,4096位提供較強的安全性。
按提示操作,你可以設置一個密鑰的密碼(可選,為密鑰增加一層保護),并確認密鑰存儲的位置(通常是~/.ssh/id_rsa
)。
注意提示會是要求你指定存儲SSH密鑰對的位置和文件名。如果你接受默認的位置和文件名(/c/Users/和諧號/.ssh/id_rsa
),你可以直接按回車鍵繼續。這將會在默認路徑下創建私鑰(id_rsa
)和公鑰(id_rsa.pub
)文件。
如果你想要指定不同的路徑或文件名,可以在這里輸入你選擇的完整路徑和文件名。如果不確定,通常推薦使用默認設置。
接下來,系統可能會詢問你是否要為密鑰設置一個密碼(passphrase)。設置密碼可以增加一層安全性,即使你的私鑰被盜用,沒有密碼也無法使用。然而,如果你的目的是實現免密碼登錄,你可以選擇不設置密碼(直接按回車鍵跳過)。
完成這些步驟后,你的SSH密鑰對將被創建,然后你可以按前面的說明將公鑰添加到遠程服務器上。這樣設置后,你應該能夠在不需要輸入密碼的情況下通過SSH或SCP連接到服務器。
注意:輸入密碼時不顯示字符——在大多數終端中,出于安全考慮,密碼輸入時不會顯示任何字符,包括星號或點。你只需要正常輸入密碼然后按回車即可。
2. 將公鑰上傳到遠程服務器
生成密鑰后,你需要將公鑰(默認為~/.ssh/id_rsa.pub
)添加到遠程服務器的~/.ssh/authorized_keys
文件中。可以手動做,也可以使用ssh-copy-id
工具來自動完成:
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 20625 root@connect.westc.gpuhub.com
-i ~/.ssh/id_rsa.pub
: 指定你的公鑰文件。-p 20625
: 指定SSH端口。
如果你的系統不支持ssh-copy-id
命令,可以手動將公鑰內容添加到服務器的~/.ssh/authorized_keys
文件中。
3. 測試SSH連接
設置完成后,嘗試不帶密碼連接到服務器:
ssh -p 20625 root@connect.westc.gpuhub.com
如果一切設置正確,你應該能夠不需要輸入密碼就可以登錄到服務器。
?
二、文件傳輸
1.文件上傳
root@autodl-container-5aa043a54e-f14d0c9a:~# scp -r -P 20625 C:/0B_workplace/program root@connect.westc.gpuhub.com:/root/autodl-tmp/program/ ssh: Could not resolve hostname c: Name or service not known
看來我們還是在遇到問題。很關鍵的一點是,你似乎在遠程服務器的終端里嘗試執行了scp
命令,但你需要在你的本地機器上執行這個命令。當你處于遠程服務器的shell(如提示符是root@autodl-container...
)時,你無法訪問你本地機器的文件系統。
為了正確執行這個操作,請確保你在本地的計算機上打開一個新的終端窗口(比如Git Bash或其他終端應用),然后在那里運行scp
命令。以下是在你的本地Git Bash中執行的命令示例:
scp -r -P 20625 "C:/0B_workplace/program" root@connect.westc.gpuhub.com:/root/autodl-tmp/program/
請注意幾點:
- 使用雙引號包圍Windows的路徑,尤其是當路徑包含空格或特殊字符時。
- 確保使用正斜杠(
/
)來表示路徑,這是Unix系統和類Unix系統中的標準,包括在Git Bash中。 -P 20625
是指定SSH端口的參數,確保這個端口是正確的。
如果你仍然遇到問題,可以確認一下你正在哪個終端運行命令,以及該終端是否可以訪問你想要上傳的文件夾。如果需要進一步幫助,請隨時聯系我!