簡單使用SSH

〇、服務(wù)器SSH免密登錄

  1. 本地生成公鑰和私鑰 ssh-keygen -t rsa
  2. 找到文件~/.ssh/id_rsa.pub,復(fù)制文件內(nèi)全部內(nèi)容
  3. 登錄服務(wù)器,找到~/.ssh/authorized_keys文件,如果沒有創(chuàng)建一個
  4. 將復(fù)制的內(nèi)容copy到authorized_keys文件中,保存

一、基本語法

  1. 登錄
ssh -p 22 user@host

參數(shù):

  • -p:指定端口號。
  • user:登錄的用戶名。
  • host:登錄的主機(jī)。

默認(rèn)的端口號為22,當(dāng)端口號為22的時候,可以省略

  1. 注銷
exit
  1. 遠(yuǎn)程操作
# 例
ssh user@host 'netstat -tln |grep 1080'
  1. 端口轉(zhuǎn)發(fā)
    轉(zhuǎn)發(fā)參數(shù):
-C:壓縮數(shù)據(jù)
-f :后臺認(rèn)證用戶/密碼,通常和-N連用,不用登錄到遠(yuǎn)程主機(jī)。
-N :不執(zhí)行腳本或命令,通常與-f連用。
-g :在-L/-R/-D參數(shù)中,允許遠(yuǎn)程主機(jī)連接到建立的轉(zhuǎn)發(fā)的端口,如果不加這個參數(shù),只允許本地主機(jī)建立連接。
-L : 本地端口:目標(biāo)IP:目標(biāo)端口
-D : 動態(tài)端口轉(zhuǎn)發(fā)
-R : 遠(yuǎn)程端口轉(zhuǎn)發(fā)
-T :不分配 TTY 只做代理用
-q :安靜模式,不輸出 錯誤/警告 信息
  • 本地轉(zhuǎn)發(fā)
#把發(fā)到本地的某個端口請求,轉(zhuǎn)發(fā)到遠(yuǎn)程的某臺機(jī)器上面
ssh -L [本地地址:]本地端口:遠(yuǎn)程地址:遠(yuǎn)程端口 遠(yuǎn)程用戶@遠(yuǎn)程地址

#把發(fā)給遠(yuǎn)程機(jī)器的某個端口請求,轉(zhuǎn)發(fā)到本地的機(jī)器上面
ssh -R [遠(yuǎn)程地址:]遠(yuǎn)程端口:本地地址:本地端口 遠(yuǎn)程用戶@遠(yuǎn)程地址

二、公私鑰登錄

  1. 原理說明
    1. 首先在客戶端生成一對密鑰(ssh-keygen)
    2. 并將客戶端的公鑰ssh-copy-id 拷貝到服務(wù)端
    3. 當(dāng)客戶端再次發(fā)送一個連接請求,包括ip、用戶名
    4. 服務(wù)端得到客戶端的請求后,會到authorized_keys中查找,如果有響應(yīng)的IP和用戶,就會隨機(jī)生成一個字符串,例如:qwer
    5. 服務(wù)端將使用客戶端拷貝過來的公鑰進(jìn)行加密,然后發(fā)送給客戶端
    6. 得到服務(wù)端發(fā)來的消息后,客戶端會使用私鑰進(jìn)行解密,然后將解密后的字符串發(fā)送給服務(wù)端
    7. 服務(wù)端接受到客戶端發(fā)來的字符串后,跟之前的字符串進(jìn)行對比,如果一致,就允許免密碼登錄
  1. 生成公鑰和私鑰
    ssh-keygen命令,可以生成公鑰和私鑰,默認(rèn)生成到用戶的家目錄下的.ssh文件夾里面
ssh-keygen -t rsa
  • 私鑰默認(rèn)會被保存在 ~/.ssh/id_rsa
  • 公鑰默認(rèn)會被保存在 ~/.ssh/id_rsa.pub
#例
ssh-keygen -f [fileName] -t rsa -C "user@host"

參數(shù)解析:

  • -f 指定要生成文件的文件名稱
  • -t 設(shè)置認(rèn)定方式,值為rsa,即非對稱加密;或dsa,即數(shù)字簽名和認(rèn)證
  • -c 指定公鑰中的備注信息

三、相關(guān)命令

  1. 查看是否啟用了ssh: netstat -ntlp |grep ssh
  2. 啟動、停止、重啟服務(wù)
  • 開啟ssh服務(wù) service sshd start
  • 停止ssh服務(wù) service sshd stop
  • 重啟ssh服務(wù) service sshd restart
  1. 配置ssh-server,配置文件位于/etc/ssh/sshd_config
  2. 默認(rèn)端口為22,為了安全,一般自定義為其他端口,然后重啟

常用命令

  1. 復(fù)制本地文件到遠(yuǎn)程主機(jī):
# 文件
scp file_name username@hostname:/remote/directory
#目錄
scp -r local_directory username@hostname:/remote/directory
  1. 拉取遠(yuǎn)程文件到本地
scp username@hostname:/remote/directory/file .
  1. 執(zhí)行遠(yuǎn)程命令
ssh username@hostname [commond]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容