在linux命令中登陸ssh服務的命令是ssh ip,例如:ssh 192.186.1.2。
ssh服務是一個守護進程(demon)。系統後台監視客戶端的連接。ssh服務端的進程名為sshd,它負責實時監視客戶端的請求(IP 22埠),包括交換公共密鑰和其他信息。
ssh伺服器由兩部分組成:openssh(提供ssh服務)、openssl(提供加密的程序)。
ssh客戶端可以用XSHELL,Securert,Mobaxterm和其他工具連接。
(1)ssh操作命令擴展閱讀:
伺服器啟動的時候自己產生一個密鑰(768bit公鑰),本地的ssh客戶端發送連接請求到ssh伺服器,伺服器檢查連接點客戶端發送的數據和IP地址;
確認合法後發送密鑰(768bits)給客戶端,此時客戶端將本地私鑰(256bit)和伺服器的公鑰(768bit)結合成密鑰對key(1024bit),發回給伺服器端,建立連接通過key-pair數據傳輸。
B. 如何使用SSH登錄遠程伺服器
默認配置
Windows下有很多SSH工具。在這里我是用的是Putty。如果安裝了Git並配置使用Putty的話,就不需要另外在安裝Putty了。使用SSH連接伺服器的命令如下:
ssh IP地址1
一般來說為了安全性考慮,埠號等一些參數並不會使用默認值。這樣的話命令就變成這樣:
ssh 用戶名@IP地址 -p 埠號1
如果連接成功的話會提示你輸入遠程伺服器的密碼。全部成功之後SSH就會顯示遠程伺服器的提示符,這時候就說明連接成功了。
密鑰登錄
每次登錄SH都需要輸入密碼很麻煩,而且可能不太安全。SSH還能使用另外一種登錄方式,也就是使用密鑰登錄。這種登錄方式需要客戶端生成一堆公鑰私鑰對,然後將公鑰添加到伺服器中,這樣下次就可以直接登錄了。
首先生成SSH密鑰,依照提示輸入信息即可。默認生成在用戶主目錄中的.ssh文件夾中。帶pub的是公鑰,接下來需要添加到伺服器中。
ssh-keygen1
然後將本地公鑰添加到伺服器中,需要使用另一個命令:
scp -P 埠號 本地文件路徑 用戶名@遠程伺服器地址:遠程路徑1
然後登陸伺服器,找到復制進去的公鑰,將公鑰名字改為authorized_keys並添加到對應的.ssh文件夾中。然後退出SSH重新登陸試試,成功的話不需要輸入密碼就會直接進入遠程伺服器。
C. VPS使用須知道的SSH命令有哪些
目錄操作:
rm -rf mydir /*刪除mydir目錄,不需要確認,直接刪除*/
mkdir dirname /*創建名為dirname的目錄*/
cd mydir /*進入mydir目錄*/
cd - /*返回進入此目錄之前所在的目錄*/
cd .. /*返回上一級目錄,中間有空格*/
cd ~ /*回當前用戶家目錄*/
mv tools tool /*把tools目錄改名為tool */
ln -s tool bac /*給tool目錄創建名為bac的符號鏈接,最熟悉的應該就是FTP中www鏈接到public_html目錄了*/
cp -a tool /home/vps.zzidc/www /*把tool目錄,復制到www目錄下 */
ls /* 列出當前目錄下的內容 */
文件操作:
rm go.tar /* 刪除go.tar文件 */
find mt.cgi /* 查找文件名為mt.cgi的文件 */
df -h /* 查看磁碟剩餘空間 */
解壓縮:
tar xvf wordpress.tar /* 解壓tar格式的文件 */
tar tvf myfile.tar /* 查看tar文件中包含的文件 */
tar cf toole.tar tool /* 把tool目錄打包為toole.tar文件 */
tar zcf vps.zzidc.tar.gz tool /* 把tool目錄打包且壓縮為vps.zzidc.tar.gz文件,因為.tar文件幾乎是沒有壓縮過的,MT的.tar.gz文件解壓成.tar文件後差不多是10MB */
tar jcvf /var/bak/www.tar.bz2 /var/www/ /*創建.tar.bz2文件,壓縮率高*/
tar xjf www.tar.bz2 /*解壓tar.bz2格式*/
gzip -d ge.tar.gz /* 解壓.tar.gz文件為.tar文件 */
unzip phpbb.zip /* 解壓zip文件,windows下要壓縮出一個.tar.gz格式的文件還是有點麻煩的 */
下載:
wget http://vps.zzidc.com/
/*下載遠程伺服器上的文件到自己的伺服器,連上傳都省了,伺服器不是100M就是1000M的帶寬,下載一個2-3兆的MT還不是幾十秒的事 */
wget -c http://vps.zzidc.com//* 繼續下載上次未下載完的文件 */
進程管理:
ps -aux /*ps 進程狀態查詢命令*/
ps命令輸出欄位的含義:
[list]
[*]USER,進程所有者的用戶名。
[*]PID,進程號,可以唯一標識該進程。
[*]%CPU,進程自最近一次刷新以來所佔用的CPU時間和總時間的百分比。
[*]%MEM,進程使用內存的百分比。
[*]VSZ,進程使用的虛擬內存大小,以K為單位。
[*]RSS,進程佔用的物理內存的總數量,以K為單位。
[*]TTY,進程相關的終端名。
[*]STAT,進程狀態,用(R--運行或准備運行;S--睡眠狀態;I--空閑;Z--凍結;D--不間斷睡眠;W-進程沒有駐留頁;T停止或跟蹤。)這些字母來表示。
[*]START,進程開始運行時間。
[*]TIME,進程使用的總CPU時間。
[*]COMMAND,被執行的命令行。
[/list]
ps -aux | grep nginx /*在所有進程中,查找nginx的進程*/
kill 1234 /*1234為進程ID,即ps -aux 中的PID*/
killall nginx /*killall 通過程序的名字,直接殺死所有進程,nginx為進程名*/
資源佔用查詢:
df -sh /home/wwwroot/* /* 查看/home/wwwroot/下各個目錄的佔用大小 */
free -m /* 查看內存核swap使用情況 */
top /* 查看程序的cpu、內存使用情況 */
netstat -ntl /* 查看埠佔用情況 */
用戶管理:
adser /*添加用戶,如adser vps.zzidc */
deluser /*刪除用戶,如deluser vps.zzidc */
passwd /*修改密碼,按提示輸入密碼,密碼不顯示*/
Vim操作:
移動類的:
h/j/k/l: 左/下/上/右移一格
w : 向後詞移動(前面加數字移動多少個詞)
b : 向前詞移動(前面加數字移動多少個詞)
e : 向後移到詞末
ge : 向前移到詞末
$ <End> : 行末
0 <Home> : 行首
tx : 向右查找本行的x並移到那兒(大寫時向左)
33G : 移到文件的第33行
gg : 文件首行
G : 文件尾行
33% : 文件的33%處
H/M/L : 屏幕的首/中/尾行
zt/zz/zb : 當前行移到屏幕的首/中/底部
跳轉:
" : 回到跳轉來的地方
CTRL-O : 跳到一個 「較老」 的地方
CTRL-I <Tab> : 則跳到一個 「較新」 的地方
查找:
/ : 向下查找(後加關鍵字)
? : 向上查找(後加關鍵字)
n : 下一條符合的記錄
編輯:
i : 轉換到插入模式
x : 刪除當前字元
. : 重復最後一次的修改操作(同PS里ctrl+f執行濾鏡)
u : 撤銷操作
CTRL-R : 重做
p : 將刪除的字元插入到當前位置(put)
退出保存:
:q : 退出
:q! : 不保存退出
ZZ : 保存後退出
:e! : 放棄修改重新編輯
D. linux之ssh命令詳解
ssh是什麼呢? 👉網路上是這么說的
簡單來說,在linux中SSH是非常常用的工具,通過SSH客戶端我們可以連接到運行了SSH伺服器的遠程機器上,也就是說,我們可以通過ssh來遠程式控制制我們的電腦或者伺服器。那麼ssh協議的優點就是數據傳輸是加密的,可以防止信息泄露,而且數據傳輸是壓縮的,可以提高傳輸速度。
它的命令格式是👉 ssh [-p port] user@remote
user 是在遠程機器上的用戶名,如果不指定的話默認為當前用戶
remote 是遠程機器的地址,可以是IP/域名,或者是別名
port 是SSH Server監聽的埠,如果不指定,就為默認值22
(使用exit退出當前用戶的登錄)
有關SSH配置信息都保存在用戶家目錄下的.ssh目錄下
接下來,我們就來實際演示一下ssh命令的使用
首先我們需要兩台linux系統的電腦來進行演示,所以我用虛擬機安裝了兩個linux的系統,分別命名為Deepin1和Deepin2(不得不說deepin真的是即好看又好用😄)
不過deepin操作系統默認ssh是沒有開啟的,我們需要手動將它開啟。
第一步,在終端輸入sudo apt-get install ssh安裝ssh服務
第二步,在終端中輸入sudo service ssh start開啟ssh服務
注意:deepin1和deepin2都要執行上面兩步來安裝和開啟ssh服務
安裝並打開ssh之後,我們使用Deepin1來遠程連接Deepin2,那麼我們需要知道Deepin2的ip地址,在終端中輸入ifconfig就可以知道當前機器的ip地址了,或者也可以直接把滑鼠放到網路連接上,會直接顯示出來。我這里Deepin2的IP地址為:192.168.56.132
然後,我們在Deepin1的終端中輸入ssh -p 22 [email protected]然後回車
這里 -p 22 可以省略,22表示ssh的埠號為22, deepin2 為Deepin2的用戶名, 192.168.56.132 為Deepin2的ip地址。
第一次連接,會彈出來是否連接的確認信息,我們輸入yes確認,然後輸入deepin2的密碼並回車。出現如下界面就表示連接成功了。
連接成功後,我們嘗試輸入 cd Desktop/ 切換到桌面目錄,然後輸入 touch 123.txt 在桌面下創建123.txt文件
我們再切換到Deepin2系統中,發現桌面上的確出現了一個新的文件123.txt,大功告成!
到這里ssh的基本操作其實已經演示完了,但是我們發現每次遠程登陸的時候都需要重新輸入密碼,稍微有點麻煩,其實我們可以通過設置,進行免密碼登錄。
免密登錄:
第一步,配置公鑰。在Deepin1終端中執行ssh-keygen即可生成SSH鑰匙,一路回車即可。
第二步,上傳公鑰到伺服器。在Deepin1終端中執行ssh--id -p port user@remotr(ssh--id -p 22 [email protected])可以讓遠程伺服器記住我們。
第三步,設置完成了,試一下是否能免密登錄呢?
可以看到,當我們遠程登陸deepin2時,並沒有輸入用戶密碼就登陸成功了!其實挺簡單的不是嗎?
E. ssh用的命令與linux用的命令有何區別,linux中的命令包括了ssh的命令么
ssh是linux的一個命令,用來在一台Linux電腦上遠程連接到另外的Linux系統。
就像Windows的遠程桌面連接一樣,只不過ssh是Linux下的用命令操作的遠程連接命令。
連接到遠程Linux後,所操作的命令就是相當於直接在該遠程機上操作了。
例如下面代碼用於遠程連接到本地區域網的某台IP為192.168.0.2,
用戶名為root的Linux伺服器:
ssh
[email protected]
輸入這個命令後回車,系統即會提示你輸出密碼,輸入正確後你就連接到192.168.0.2這台電腦了。
然後在這個終端所做的命令操作都是針對192.168.0.2這台電腦的。
如果你想了解更詳細內容,建議看看劉遄老師的另外就是劉遄老師的《linux就該這么學》,書籍當中有詳細的描述;
F. SSH遠程操作與埠轉發的原理
SSH不僅可以用於遠程主機登錄,還可以直接在遠程主機上執行操作。
上一節的操作,就是一個例子:
單引號中間的部分,表示在遠程主機上執行的操作;後面的輸入重定向,表示數據通過SSH傳向遠程主機。
這就是說,SSH可以在用戶和遠程主機之間,建立命令和數據的傳輸通道,因此很多事情都可以通過SSH來完成。
下面看幾個例子。
【例1】
將 HOME/src/目錄。
【例2】
將遠程主機$HOME/src/目錄下面的所有文件,復制到用戶的當前目錄。
【例3】
查看遠程主機是否運行進程httpd。
既然SSH可以傳送數據,那麼我們可以讓那些不加密的網路連接,全部改走SSH連接,從而提高安全性。
假定我們要讓8080埠的數據,都通過SSH傳向遠程主機,命令就這樣寫:
SSH會建立一個socket,去監聽本地的8080埠。一旦有數據傳向那個埠,就自動把它轉移到SSH連接上面,發往遠程主機。可以想像,如果8080埠原來是一個不加密埠,現在將變成一個加密埠。
有時,綁定本地埠還不夠,還必須指定數據傳送的目標主機,從而形成點對點的"埠轉發"。為了區別後文的"遠程埠轉發",我們把這種情況稱為"本地埠轉發"(Local forwarding)。
假定host1是本地主機,host2是遠程主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。
我們在host1執行下面的命令:
命令中的L參數一共接受三個值,分別是"本地埠:目標主機:目標主機埠",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地埠2121,然後指定host3將所有的數據,轉發到目標主機host2的21埠(假定host2運行FTP,默認埠為21)。
這樣一來,我們只要連接host1的2121埠,就等於連上了host2的21埠。
"本地埠轉發"使得host1和host3之間彷彿形成一個數據傳輸的秘密隧道,因此又被稱為"SSH隧道"。
下面是一個比較有趣的例子。
它表示將本機的5900埠綁定host3的5900埠(這里的localhost指的是host3,因為目標主機是相對host3而言的)。
另一個例子是通過host3的埠轉發,ssh登錄host2。
這時,只要ssh登錄本機的9001埠,就相當於登錄host2了。
上面的-p參數表示指定登錄埠。
既然"本地埠轉發"是指綁定本地埠的轉發,那麼"遠程埠轉發"(remote forwarding)當然是指綁定遠程埠的轉發。還是接著看上面那個例子,host1與host2之間無法連通,必須藉助host3轉發。但是,特殊情況出現了,host3是一台內網機器,它可以連接外網的host1,但是反過來就不行,外網的host1連不上內網的host3。這時,"本地埠轉發"就不能用了,怎麼辦?
解決辦法是,既然host3可以連host1,那麼就從host3上建立與host1的SSH連接,然後在host1上使用這條連接就可以了。
我們在host3執行下面的命令:
R參數也是接受三個值,分別是"遠程主機埠:目標主機:目標主機埠"。這條命令的意思,就是讓host1監聽它自己的2121埠,然後將所有數據經由host3,轉發到host2的21埠。由於對於host3來說,host1是遠程主機,所以這種情況就被稱為"遠程埠綁定"。
綁定之後,我們在host1就可以連接host2了:
這里必須指出,"遠程埠轉發"的前提條件是,host1和host3兩台主機都有sshD和ssh客戶端。
SSH還有一些別的參數,也值得介紹。
N參數,表示只連接遠程主機,不打開遠程shell;T參數,表示不為這個連接分配TTY。這個兩個參數可以放在一起用,代表這個SSH連接只用來傳數據,不執行遠程操作。
f參數,表示SSH連接成功後,轉入後台運行。這樣一來,你就可以在不中斷SSH連接的情況下,在本地shell中執行其他操作。
要關閉這個後台連接,就只有用kill命令去殺掉進程。
G. 如何通過ssh登錄伺服器執行linux指令
介紹如何在windows主機上通過ssh遠程登錄ubuntu操作系統,這里以虛擬機的操作系統為例講解。方法/步驟
准備工作:首先需要在windows系統中安裝虛擬機,並在虛擬機中安裝好linux操作系統,這里安裝的是vmware player虛擬機和ubuntu版本的操作系統。關於該部分的安裝在作者的其他經驗中有詳細介紹。
在windows主機中安裝上ssh軟體,ssh是Secure Shell 的縮寫,主要提供遠程登錄協議。windows下的安裝很簡單,只要下載好安裝程序,雙擊即可安裝。安裝完成後會生成兩個軟體圖標。
在ubuntu系統中安裝ssh,通常ubuntu中默認是安裝的。可以通過命令進行查看:dpkg -l | grep ssh
如果ubuntu系統中沒有安裝ssh程序,也可以使用下列命令進行安裝:
sudo apt-get install openssh-client
sudo apt-get install openssh-server
安裝好後ssh服務的啟動和停止命令如下:
啟動ssh服務:
#sudo /etc/init.d/ssh start
停止ssh服務:
#sudo /etc/init.d/ssh stop
重啟ssh服務:
#sudo /etc/init.d/ssh restart
通過虛擬機啟動ubuntu系統,打開shell終端,通過ifconfig命令,查看該系統的ip地址,ssh的埠號一般為22.
打開windows系統中的ssh客戶端軟體,選擇快速連接,輸入ubuntu系統的ip地址和賬戶名,並根據提示輸入密碼,即可通過ssh登錄到ubuntu系統中去,並執行各種命令操作。