➣ 簡介
tip 常用Linux命令
內容主要包括:查看IP地址、ssh相關操作、scp相關操作、進程相關操作、端口相關操作、凍結終端、釋放/獲取IP地址、密匙相關操作、使用密匙進行免密登陸、不通過配置文件實現免密登陸、config配置文件拓展
IP 地址相關操作
查看 IP 地址可以使用 ip 命令或 ifconfig 命令,推薦使用 ip 命令:
1)使用 ip 命令查看 IP 地址:
ip addr
或
ip addr | grep inet(展示更爲簡單)
2)使用 ifconfig 查看 IP 地址:
ifconfig
或
ifconfig | grep inet(展示更爲簡單)
SSH 相關操作
SSH 協議可以讓我們登陸遠程服務器,在使用 SSH 協議之前,需要確保:
客戶機和服務器都安裝了 SSH 協議
服務器的 SSH 處於開啓狀態
1)安裝 SSH 協議
Ubuntu 上默認是沒有安裝 SSH 服務的,需要我們進行手動安裝:
sudo apt-get install openssh-client openssh-server
2)查看 SSH 服務是否處於開啓狀態
安裝好 SSH 服務後會就會默認開啓,我們也可以通過 systemctl 命令進行查看:
systemctl status sshd
如果服務沒有開啓,可以手動開啓:
systemctl start sshd
有時候 SSH 服務可能是禁用的,需要先解除禁用:
systemctl enable sshd
解除禁用後就可以使用 systemctl start sshd 開啓 SSH 服務了。
也可以停止 SSH 服務:
systemctl stop sshd
當我們安裝並開啓 SSH 服務後,就可以使用 ssh 命令進行遠程登錄了,該命令的使用方式爲:
ssh user@address
如:
ssh [email protected]
SCP 相關操作
SCP 是基於 SSH 的協議,可以用來上傳資源至服務器或者從服務器下載資源。
1)上傳文件
scp path user@address:path
上面第一個 path 是本地要上傳到服務器的文件路徑,第二個 path 是要上傳到服務器的目標地址。注意不要遺忘服務器 IP 地址和目標路徑之間的冒號。
如:
scp ./test.txt [email protected]:/home/charley
也可以上傳目錄:
scp -r ./mysite [email protected]:/home/charley
2)下載文件
scp [email protected]:/home/charley/helloworld.js .
也可以下載目錄:
scp -r [email protected]:/home/charley/mysite2 .
總結一下,scp 命令前面的參數是上傳或下載的源地址,後面的參數是上傳或下載的目標地址,如果需要上傳或下載目錄,需要在 scp 命令後加上短參數 -r。
進程相關操作
1)查看當前的進程
ps aux
或
ps aux | greo xxx(查看某一個進程)
2)殺死進程
kill PID(進程號)
3)強制殺死進程
kill -9 PID
端口相關操作
使用 netstat 命令可以查看端口信息:
netstat
或
netstat [-anp]
或
netstat [-anp] | grep PORT(端口)
也可以使用 lsof 命令查看端口信息:
lsof -i tcp:8080
凍結終端
在終端按下 Ctrl + S 組合鍵,終端就會被凍結。如果想解凍的話,按下 Ctrl + Q 組合鍵即可。
釋放/獲取 IP 地址
dhclient 命令可以釋放或者獲取本機的 IP 地址。
1)釋放操作
dhclient -r
2)獲取操作
dhclient
當局域網的 IP 地址衝突時,可以用此方法解決。
密鑰相關操作
可以使用 ssh-keygen (Key Generator)生成公鑰和私鑰,需要先安裝 SSH 服務。
ssh-keygen 的使用:
- -t:選擇的加密算法,一般選擇 RSA 算法
- -C:加密的特徵碼
- -f:生成的密鑰文件的文件名
用法如下:
ssh-keygen -t rsa -C "Charley" -f "charley_rsa"
命令執行完成後,會在執行命令的目錄中生成一個 charley_rsa 和 charley_rsa.pub 文件,其中前一個是私鑰,後一個是公鑰。切記私鑰一定不要泄露。
使用密鑰進行免密登陸
有了公鑰和私鑰後,就可以在服務器進行免密登陸了。首先,需要將我們的公鑰傳遞到服務器用戶主目錄的 .ssh 目錄下。如 /home/charley/.ssh 或 /root/.ssh,傳到前一個目錄就可以免密登陸到 charley 這個用戶,傳到後一個目錄就可以免密登陸到 ROOT 用戶,以此類推。
服務器接受到公鑰文件後,需要將公鑰文件的內容追加到 authorized_keys 文件中,如果服務器還沒有該文件,需要先創建一個。
cat charley_rsa.pub >> authorized_keys
建議在生成密鑰時需要將私鑰放在用戶主目錄的 .ssh 文件夾下以方便管理,並且需要確認私鑰的操作權限爲 600,即只能私鑰的所有者進行操作,其他用戶不能操作私鑰。
接下來,我們需要在客戶機配置一個 config 文件,以實現免密登陸,如果客戶機上還沒有該文件,需要先創建一個。
config 文件配置的模板如下:
- 要登錄的用戶名
User charley
- 登陸的別名
Host charley-server
- 登陸的地址,可以是一個 IP 地址或者域名
HostName 192.168.1.109
- 登陸的端口
Port 22
- 第一次連接服務器時,自動接受新的公鑰
StrictHostKeyChecking no
- 私鑰文件的路徑
IdentityFile ~/.ssh/charley_rsa
- 維持 SSH 連接,防止長時間不做操作被踢
IdentitiesOnly yes
- 其他配置項,照搬即可
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
寫好配置文件後,我們輸入 ssh charley-server 就可以實現免密登陸了。
不通過配置文件實現免密登陸
前面是介紹了通過 config 配置文件的方式實現免密登陸,但在某些情況下我們可能沒有權限操作配置文件,這就要手動指定祕鑰進行登陸了。手動指定祕鑰進行登陸也很簡單:
ssh -i charley_rsa [email protected]
通過 -i 短參數指定了客戶機的私鑰地址,同樣可以實現服務器的免密登陸。
config 配置文件的擴展
在 config 配置文件中,不僅可以配置單臺主機的免密登陸,還可以配置多臺主機的免密登陸,同時還可以對多臺主機共用一個公鑰或不同的公鑰進行配置。以下提供一個簡單的配置模板。
1)多臺主機共用一個公鑰
- 第一臺主機
Host charley-first-server
HostName xxx
Port 22
- 第二臺主機
Host charley-second-server
HostName xxx
Port 22
Host *-server
User charley
IdentityFile ~/.ssh/charley_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
2)多臺主機使用不同的公鑰
- 第一臺主機
User charley
Host charley-first-server
HostName xxx
Port 22
StrictHostKeyChecking no
IdentityFile ~/.ssh/charley_first_rsa
IdentitiesOnly yes
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
- 第二臺主機
User charley
Host charley-second-server
HostName xxx
Port 22
StrictHostKeyChecking no
IdentityFile ~/.ssh/charley_second_rsa
IdentitiesOnly yes
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
➣ 總結
本文介紹了一些和 Linux 遠程操作相關的命令,這些命令都是基於 SSH 協議的,包括用來遠程登陸的 ssh 命令和用來上傳或下載文件的 scp 命令。
文章的後半部分,介紹瞭如何使用 ssh-keygen 命令生成密鑰文件,以及通過配置文件和手動指定密鑰文件兩種實現免密登陸的方式。
需要注意的是,要實現免密登陸,需要在服務器上保存客戶機的公鑰文件,同時需要將該公鑰文件的內容追加到 authorized_keys 文件中。