1 ssh
ssh一般用於連接服務器,可以使用密碼認證與密鑰認證的方式。
1.1 密碼認證
直接使用ssh即可:
ssh username@xxx.xxx.xxx.xxx
username為用戶名,后面為公網ip.
若需要使用特定端口登錄,加上p參數,比如使用12345端口:
ssh -p 12345 username@xxx.xxx.xxx.xxx
1.2 密鑰認證
密鑰認證需要先生成密鑰,然后把公鑰使用scp上傳到服務器,接着修改服務器的ssh配置文件。
1.2.1 生成密鑰
ssh-keygen -t rsa -b 4096 -C "email" -f /xxx/id_rsa
t表示加密算法,b指定位數,C表示注釋,識別這個密鑰,一般用郵箱即可。f表示生成的私鑰文件位置(需要加上文件名),公鑰會放在同一文件夾下。
1.2.2 上傳公鑰
使用scp上傳公鑰到服務器,注意是公鑰,ssh-keygen會生成一個公鑰與私鑰,pub結尾的文件就是公鑰,默認叫id_rsa.pub .
scp /xxxx/id_rsa.pub username@xxx.xxx.xxx.xxx:/root/
這里就直接放到服務器上的/root下。
1.2.3 修改ssh配置文件
先使用ssh密碼認證的方式登錄服務器,然后修改/etc/ssh/sshd_config:
cd /etc/ssh
cp sshd_config sshd_config.bak
vim sshd_config
找到PubKeyAuthentication這一行,修改如下:
如果需要修改端口的,搜索Port,直接修改:
接着重啟sshd服務:
systemctl restart sshd
1.2.4 測試連接
ssh -i /xxx/id_rsa -p port username@xxx.xxx.xxx.xxx
其中i后為私鑰的位置,p參數如果修改了默認的端口(22)則需要加上自定義端口。
如果在windows上生成的私鑰,可能會有如下問題:
這里提示私鑰的權限是755,也就是其他用戶可讀,需要修改為600:
chmod 600 /xxx/id_rsa
如果用的是wsl可能會修改失敗,需要加上wsl的配置,修改/etc/wsl.conf(如果沒有就新建)
vim /etc/wsl.conf
輸入:
[automount]
enabled = true
options = "metadata,umask=22,fmask=11"
mountFsTab = false
退出wsl重啟,然后再修改權限,應該就沒問題了。
2 scp
scp是secure copy的縮寫,一般用於從服務器下載文件或上傳文件到服務器,與ssh類似,可以使用密碼認證或密鑰認證或指定端口。
2.1 上傳文件(夾)到服務器
scp localFile username@xxx.xxx.xxx.xxx:/xxxx
scp -r localDir username@xxx.xxx.xxx.xxx:/xxx
上面是密碼認證的方式,密鑰認證請加上i參數,指定私鑰位置:
scp localFile username@xxx.xxx.xxx.xxx:/xxx
scp -i /xxx/id_rsa -r localDir username@xxx.xxx.xxx.xxx:/xxxx
需要特定端口請加上P參數(注意是大寫,不是ssh的小寫p端口參數)
scp -i /xxx/id_rsa -P xx localFile username@xxx.xxx.xxx.xxx
2.2 從服務器下載文件(夾)
scp username@xxx.xxx.xxx.xxx:/xxx /localDir
scp -r username@xxx.xxx.xxx:/xxx /localDir
第一個是下載文件,第二個是下載文件夾,需要加上r參數。
同理,密鑰認證加i參數,端口加P參數:
scp -i /xxx/id_rsa -P xx username@xxx.xxx.xxx.xxx:/xxx /localDir
scp -i /xxx/id_rsa -P xx -r username@xxx.xxx.xxx.xxx:/xxx /localDir