〇、服務(wù)器SSH免密登錄
- 本地生成公鑰和私鑰
ssh-keygen -t rsa - 找到文件
~/.ssh/id_rsa.pub,復(fù)制文件內(nèi)全部內(nèi)容 - 登錄服務(wù)器,找到
~/.ssh/authorized_keys文件,如果沒有創(chuàng)建一個 - 將復(fù)制的內(nèi)容copy到
authorized_keys文件中,保存
一、基本語法
- 登錄
ssh -p 22 user@host
參數(shù):
- -p:指定端口號。
- user:登錄的用戶名。
- host:登錄的主機(jī)。
默認(rèn)的端口號為22,當(dāng)端口號為22的時候,可以省略
- 注銷
exit
- 遠(yuǎn)程操作
# 例
ssh user@host 'netstat -tln |grep 1080'
- 端口轉(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. 首先在客戶端生成一對密鑰(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)行對比,如果一致,就允許免密碼登錄
- 生成公鑰和私鑰
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)命令
- 查看是否啟用了ssh:
netstat -ntlp |grep ssh - 啟動、停止、重啟服務(wù)
- 開啟ssh服務(wù)
service sshd start - 停止ssh服務(wù)
service sshd stop - 重啟ssh服務(wù)
service sshd restart
- 配置ssh-server,配置文件位于/etc/ssh/sshd_config
- 默認(rèn)端口為22,為了安全,一般自定義為其他端口,然后重啟
常用命令
- 復(fù)制本地文件到遠(yuǎn)程主機(jī):
# 文件
scp file_name username@hostname:/remote/directory
#目錄
scp -r local_directory username@hostname:/remote/directory
- 拉取遠(yuǎn)程文件到本地
scp username@hostname:/remote/directory/file .
- 執(zhí)行遠(yuǎn)程命令
ssh username@hostname [commond]