secure shell(ssh) 是由 ietf(the internet engineering task force) 制定的建立在應用層基礎上的安全網路協議。它是專為遠端登入會話(甚至可以用windows遠端登入linux伺服器進行檔案互傳)和其他網路服務提供安全性的協議,可有效彌補網路中的漏洞。通過ssh,可以把所有傳輸的資料進行加密,也能夠防止dns欺騙和ip欺騙。還有乙個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。目前已經成為linux系統的標準配置。
ssh只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文主要介紹openssh免費開源軟體,如果要在windows中使用ssh,需要使用另乙個軟體putty。
ssh的優勢,網路傳輸服務程式不止有ssh,還有很多。ftp、pop和telnet其本質上都是不安全的;因為它們在網路上用明文傳送資料、使用者帳號和使用者口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。ssh可以通過rsa加密對傳輸內容加密,並且壓縮,所以相對較快、較安全。
ssh的驗證方式有兩種:帳密驗證和公鑰私鑰驗證,第二種方式相對較安全。
相關聯的rpm包:openssh(底層包) 、 openssh-clients 、 openssh-server
伺服器端安裝: yum install openssh-server (安裝了openssh-server會自動安裝openssh)
客戶端安裝: yum install openssh-clients (安裝了openssh-clients 會自動安裝openssh)
解除安裝: yum remove openssh (解除安裝了openssh,然後會自動解除安裝openssh-server和openssh-clients)
服務:/usr/sbin/sshd
服務埠:tcp / 22
伺服器端配置檔案:/etc/ssh/sshd_config
客戶端配置檔案: /etc/ssh/ssh_config
用法:ssh -p 22 [email protected] ,如果配置檔案中 /etc/ssh/ssh_config 預設是22號埠,則可以直接 ssh [email protected]
服務開啟/關閉/重啟/開機自啟/開啟不自啟: systemctl start / stop / restart / enable / disable sshd
ssh服務端的配置檔案(部分): /etc/ssh/sshd_config
#port 22 //預設的埠號為22 修改埠時,取消注釋#logingracetime 2m //ssh登入時,密碼驗證的超時時間,預設2分鐘
#permitrootlogin yes //是否允許以root使用者身份登入
#maxauthtries 6 //最大認證次數
#maxsessions 10 //登入sessions保持的天數
#permitemptypasswords no //是否允許空密碼
passwordauthentication yes //開啟密碼認證
我們需要修改配置的時候,最終極辦法就是修改完配置檔案直接重啟就行service sshd restart
命令可以檢查ssh服務是否開啟 ps -e | grep ssh
-p命令可以指定連線的埠 ssh -p 1234 [email protected]
然後輸入該使用者的面即可
圖形使用者介面的連線更加簡單,不做講述。
在主機a上,使用 ssh-keygen,然後輸入儲存的檔名(預設為id_rsa)和自己的私鑰,完成之後會在 ~/.ssh/ 生成的兩個金鑰: id_rsa(私鑰) 和 id_rsa.pub(公鑰)
私鑰(id_rsa)儲存在本地主機,公鑰(id_rsa.pub)通過 ssh-copy-id [email protected] 會自動傳遞到對端b主機的~/.ssh/目錄下,並且自動重新命名為 authorized_keys
登入目標主機: ssh [email protected] 使用剛剛輸入的私鑰登入
具體:1、在本機生成金鑰對
使用ssh-keygen命令生成金鑰對:
ssh-keygen -t rsa #-t表示型別選項,這裡採用rsa加密演算法
然後根據提示一步步的按enter鍵即可(其中有乙個提示是要求設定私鑰口令passphrase,不設定則為空,這裡看心情吧,如果不放心私鑰的安全可以設定一下),執行結束以後會在 /home/當前使用者 目錄下生成乙個 .ssh 資料夾,其中包含私鑰檔案 id_rsa 和公鑰檔案 id_rsa.pub。
2、將公鑰複製到遠端主機中
使用ssh-copy-id命令將公鑰複製到遠端主機。ssh-copy-id會將公鑰寫到遠端主機的 ~/ .ssh/authorized_key 檔案中
ssh-copy-id [email protected]
點選此處是乙個網友遠端登入谷歌雲的例子
1、可以利用 nohup + 需要執行的程式 使執行的程式在切斷ssh連線的時候仍然能夠繼續在遠端主機中執行。nohup即no hang up(不掛起)。
2、scap、put、get等跨主機傳輸檔案
3、繫結本地埠
$ ssh -d 8080 user@host
ssh會建立乙個socket,去監聽本地的8080埠。一旦有資料傳向8080埠,就自動把它轉移到ssh連線上面,發往遠端主機。可以想象,如果8080埠原來是乙個不加密埠,現在將變成乙個加密埠。
根據柚子皮的例子:
有時,繫結本地埠還不夠,還必須指定資料傳送的目標主機,從而形成點對點的"埠**"。為了區別後文的"遠端埠**",我們把這種情況稱為"本地埠**"(local forwarding)。
假定host1是本地主機,host2是遠端主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。
我們在host1執行下面的命令:
$ ssh -l 2121:host2:21 host3
命令中的l引數一共接受三個值,分別是"本地埠:目標主機:目標主機埠",它們之間用冒號分隔。這條命令的意思,就是指定ssh繫結本地埠2121,然後指定host3將所有的資料,**到目標主機host2的21埠(假定host2執行ftp,預設埠為21)。
這樣一來,我們只要連線host1的2121埠,就等於連上了host2的21埠。
$ ftp localhost:2121
"本地埠**"使得host1和host3之間彷彿形成乙個資料傳輸的秘密隧道,因此又被稱為"ssh隧道"。
下面是乙個比較有趣的例子。
$ ssh -l 5900:localhost:5900 host3
它表示將本機的5900埠繫結host3的5900埠(這裡的localhost指的是host3,因為目標主機是相對host3而言的)。
另乙個例子是通過host3的埠**,ssh登入host2。
$ ssh -l 9001:host2:22 host3
這時,只要ssh登入本機的9001埠,就相當於登入host2了。
$ ssh -p 9001 localhost
上面的-p引數表示指定登入埠。
出錯處理:ssh: could not resolve hostname 192.168.*.*:***: name or service not known
解決:指定埠不能直接使用ip:埠號,使用-p引數來解決就可以了。
4、遠端埠**(來自柚子皮)
遠端埠**
既然"本地埠**"是指繫結本地埠的**,那麼"遠端埠**"(remote forwarding)當然是指繫結遠端埠的**。
還是接著看上面那個例子,host1與host2之間無法連通,必須借助host3**。但是,特殊情況出現了,host3是一台內網機器,它可以連線外網的host1,但是反過來就不行,外網的host1連不上內網的host3。這時,"本地埠**"就不能用了,怎麼辦?
解決辦法是,既然host3可以連host1,那麼就從host3上建立與host1的ssh連線,然後在host1上使用這條連線就可以了。
我們在host3執行下面的命令:
$ ssh -r 2121:host2:21 host1
r引數也是接受三個值,分別是"遠端主機埠:目標主機:目標主機埠"。這條命令的意思,就是讓host1監聽它自己的2121埠,然後將所有資料經由host3,**到host2的21埠。由於對於host3來說,host1是遠端主機,所以這種情況就被稱為"遠端埠繫結"。
繫結之後,我們在host1就可以連線host2了:
$ ftp localhost:2121
這裡必須指出,"遠端埠**"的前提條件是,host1和host3兩台主機都有sshd和ssh客戶端。
SSH的兩種登入方式
ssh客戶端使用的是xshell,windows環境。第一種方式,使用者名稱密碼方式 原理如下 xshell操作如下 第二種方式基於秘鑰的登入方式 現在拿伺服器a 192.168.204.192 訪問伺服器b 192.168.204.100 舉例 xshell操作如下 1.在伺服器a端生成rsa的公...
ssh 登入 SSH兩種登入驗證方式
ssh是一種協議標準,其目的是實現安全遠端登入以及其它安全網路服務。ssh登入主要分為兩個階段 1 協商客戶端和服務端雙方通訊所使用的共享金鑰,並用這個共享金鑰實現後續會話過程的對稱加密 2 使用非對稱加密方式驗證客戶端的身份。圖 1 交換共享秘鑰 1 客戶端發起tcp連線請求 2 伺服器返回其支援...
MySQL 兩種登入方式
可以參考我的 mysql 用批處理指令碼bat快速啟動 關閉mysql 或者在計算機的服務那裡開啟,設為手動或自動 即開始選單的mysql5.5 command line client 登入 mysql h主機名 p埠號 u使用者名稱 p密碼 如mysql h localhost p 3306 u ...