〇、服務器SSH免密登錄
- 本地生成公鑰和私鑰
ssh-keygen -t rsa
- 找到文件
~/.ssh/id_rsa.pub
议慰,復制文件內全部內容 - 登錄服務器蠢古,找到
~/.ssh/authorized_keys
文件,如果沒有創(chuàng)建一個 - 將復制的內容copy到
authorized_keys
文件中别凹,保存
一便瑟、基本語法
- 登錄
ssh -p 22 user@host
參數(shù):
- -p:指定端口號番川。
- user:登錄的用戶名。
- host:登錄的主機颁督。
默認的端口號為22,當端口號為22的時候屿讽,可以省略
- 注銷
exit
- 遠程操作
# 例
ssh user@host 'netstat -tln |grep 1080'
- 端口轉發(fā)
轉發(fā)參數(shù):
-C:壓縮數(shù)據(jù)
-f :后臺認證用戶/密碼吠裆,通常和-N連用伐谈,不用登錄到遠程主機试疙。
-N :不執(zhí)行腳本或命令,通常與-f連用祝旷。
-g :在-L/-R/-D參數(shù)中嘶窄,允許遠程主機連接到建立的轉發(fā)的端口距贷,如果不加這個參數(shù),只允許本地主機建立連接忠蝗。
-L : 本地端口:目標IP:目標端口
-D : 動態(tài)端口轉發(fā)
-R : 遠程端口轉發(fā)
-T :不分配 TTY 只做代理用
-q :安靜模式,不輸出 錯誤/警告 信息
- 本地轉發(fā)
#把發(fā)到本地的某個端口請求长赞,轉發(fā)到遠程的某臺機器上面
ssh -L [本地地址:]本地端口:遠程地址:遠程端口 遠程用戶@遠程地址
#把發(fā)給遠程機器的某個端口請求闽撤,轉發(fā)到本地的機器上面
ssh -R [遠程地址:]遠程端口:本地地址:本地端口 遠程用戶@遠程地址
二、公私鑰登錄
- 原理說明
1. 首先在客戶端生成一對密鑰(ssh-keygen)
2. 并將客戶端的公鑰ssh-copy-id 拷貝到服務端
3. 當客戶端再次發(fā)送一個連接請求哟旗,包括ip、用戶名
4. 服務端得到客戶端的請求后闸餐,會到authorized_keys中查找,如果有響應的IP和用戶近上,就會隨機生成一個字符串拂铡,例如:qwer
5. 服務端將使用客戶端拷貝過來的公鑰進行加密壹无,然后發(fā)送給客戶端
6. 得到服務端發(fā)來的消息后感帅,客戶端會使用私鑰進行解密,然后將解密后的字符串發(fā)送給服務端
7. 服務端接受到客戶端發(fā)來的字符串后失球,跟之前的字符串進行對比岖是,如果一致,就允許免密碼登錄
- 生成公鑰和私鑰
ssh-keygen命令豺撑,可以生成公鑰和私鑰,默認生成到用戶的家目錄下的.ssh文件夾里面
ssh-keygen -t rsa
- 私鑰默認會被保存在
~/.ssh/id_rsa
- 公鑰默認會被保存在
~/.ssh/id_rsa.pub
#例
ssh-keygen -f [fileName] -t rsa -C "user@host"
參數(shù)解析:
- -f 指定要生成文件的文件名稱
- -t 設置認定方式聪轿,值為rsa荧止,即非對稱加密;或dsa跃巡,即數(shù)字簽名和認證
- -c 指定公鑰中的備注信息
三、相關命令
- 查看是否啟用了ssh:
netstat -ntlp |grep ssh
- 啟動外莲、停止兔朦、重啟服務
- 開啟ssh服務
service sshd start
- 停止ssh服務
service sshd stop
- 重啟ssh服務
service sshd restart
- 配置ssh-server,配置文件位于/etc/ssh/sshd_config
- 默認端口為22沽甥,為了安全,一般自定義為其他端口摆舟,然后重啟
常用命令
- 復制本地文件到遠程主機:
# 文件
scp file_name username@hostname:/remote/directory
#目錄
scp -r local_directory username@hostname:/remote/directory
- 拉取遠程文件到本地
scp username@hostname:/remote/directory/file .
- 執(zhí)行遠程命令
ssh username@hostname [commond]