ssh驗證和端口轉發
阿新 • • 發佈:2018-02-14
securecrt ssh服務器 驗證方式 nom 基於 查找 適合 cli 80端口
ssh 服務登錄驗證
ssh 服務登錄驗證方式: 用戶/ 口令 基於密鑰 基於用戶和口令登錄驗證 客戶端發起ssh請求,服務器會把自己的公鑰發送給用戶 用戶會根據服務器發來的公鑰對密碼進行加密 加密後的信息回傳給服務器,服務器用自己的私鑰解密,如果密碼正確,則用戶登錄成功 基於用戶名口令登錄驗證 基於密鑰的登錄方式 1。首先在客戶端生成一對密鑰(ssh-keygen) 2。並將客戶端的公鑰ssh-copy-id拷貝到服務端 3。 當客戶端再次發送一個連接請求,包括ip 、用戶名 4。 服務端得到客戶端的請求後,會到authorized_keys中查找,如果有響應的IP和用戶,就會隨機生成一個字符串,例如:acdf 5。 服務端將使用客戶端拷貝過來的公鑰進行加密,然後發送給客戶端 6。 得到服務端發來的消息後,客戶端會使用私鑰進行解密,然後將解密後的字符串發送給服務端 7。 服務端接受到客戶端發來的字符串後,跟之前的字符串進行對比,如果一致,就允許免密碼登錄
基於key 認證
ssh-keygen ssh-keygen - authentication(證明)key generation, management and conversion(轉化) ssh-keygen [options] -t type 指定密鑰創建的類型 -P phrase 提供老的密碼 -f 指定密鑰文件 -p 更改私鑰文件的密碼 -i 導入到openssh密鑰文件 ssh-copy-id ssh-copy-id - install your public key in a remote machine’s authorized_keys ssh-copy-id [-i [identity_file]] [user@]machine ssh-add ssh-add - adds private key identities to the authentication agent ssh-add [-n [-T token]] [-e pkcs11] [-s pkcs11] [-cDdLlXx] [-t life] [file ...] 基於密鑰的認證: 1。在客戶端生成密鑰對 ssh-keygen -t rsa [-P ‘‘] [-f “~/.ssh/id_rsa"] 2。把公鑰文件傳輸至遠程服務器對應用戶的家目錄 ssh-copy-id [-i [identity_file]] [user@] host 3。測試,完成 可以給私鑰加口令 : ssh-keygen –p 私鑰加口令後使用代理。 啟動代理 ssh-agent bash 當你輸入一次私鑰的口令後,代理(authentication agent )保存口令,幫你下次自動登錄,但當你註銷後,代理程序關閉了。 要想再使用代理,就需要再此啟動並ssh-add,才能有用。 在GNOME中,代理被自動提供給root用戶,否則運行ssh-agent bash 私鑰口令通過命令添加給代理 ssh-add 在SecureCRT或Xshell實現基於key驗證 在SecureCRT 工具—> 創建公鑰—> 生成Identity.pub 文件轉化為openssh 兼容格式(適合SecureCRT ,Xshell 不需要轉化格式),並復制到需登錄主機上相應文件authorized_keys 中,註意權限 必須為600 ,在需登錄的ssh 主機上執行: ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys(secureCRT)
SSH 端口轉發
SSH 端口轉發 SSH會自動加密和解密所有SSH客戶端與服務端之間的網絡數據。 但是,SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,並且自動提供了相應的加密及解密服務,這一 過程也被叫做“隧道”(tunneling )。 這是因為 SSH 為其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名,例如,Telnet、SMTP、LDAP 這些 TCP 應用均能夠從中得益,可以避免用戶名,密碼以及隱私信息的明文傳輸。 與此同時, 如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許SSH的連接 ,也能夠通過將 TCP 端口轉發來使用 SSH 進行通訊 SSH 端口轉發能夠提供兩大功能: 加密SSH Client 端至 SSH Server端之間的通訊數據 突破防火墻的限制完成一些之前無法建立的TCP連接 本地轉發: -L localport:remotehost:remotehostport sshserver 選項: -f 後臺啟用 -N 不打開遠程shell ,處於等待狀態 -g 啟用網關功能 示例 A機器上為本地: 當你訪問本機9527端口時,它會將請求轉發到B的sshd服務器上,ssh服務器收到解密後,將其再轉發到c的telnet服務器的23端口。 前提:C機器上telnet服務打開,A和B機器上sshd服務打開,本機防火墻關閉 ssh –L 9527:telnetsrvIP:23 -Nf sshsrvIP (開通橋) telnet 127.0.0.1 9527 data <- -> localhost:9527 <- -> localhost:XXXXX <- ->sshsrv:22 <- -> sshsrv:YYYYY <- -> telnetsrv:23 遠程轉發: -R sshserverport:remotehost:remotehostport sshserver 示例: B機器為本機: 讓A機器sshsrv偵聽9527端口的訪問,如有訪問,A機器就加密後通過ssh服務轉發請求到B本機ssh客戶端,再由本機解密後轉發到smtpsrv:25 ssh –R 9527:smtpsrvIP:25 –Nf sshsrvIP Data <- -> remotesshsrv:9527 <- -> remotesshsrv:22 <- -> localhost:XXXXX <- -> localhost:YYYYY(隨機端口) <- -> smtpsrv:25 動態端口轉發: 當用firefox訪問internet 時,本機的1080端口做為代理服務器,firefox 的訪問請求被轉發到sshserver 上,由sshserver替之訪問internet 在本機firefox 設置代理socket proxy:127.0.0.1:1080 ssh -D 1080 root@sshserver curl --proxy
X協議轉發
所有圖形化應用程序都是X客戶程序
能夠通過tcp/ip 連接遠程X服務器
數據沒有加密機,但是它通過ssh連接隧道安全進行
ssh -X user@remotehost gedit
remotehost主機上的gedit 工具,將會顯示在本機的X服務器上
傳輸的數據將通過ssh連接加密
ssh驗證和端口轉發