SSH 最常用的登陸方法是ssh username@server -p port
本文將通過~/.ssh/confg配置文件,實現免密、更改名稱的登陸方法,不論你的username、server address、port是什么,都可以不用輸入,只需要輸入一個替換的名稱即可登陸該服務器。像這樣ssh <any name here>
Tips: 這里所有的操作都是在本地進行的,不需要遠程登陸服務器。
1. 實現免密登陸
1.1 rsa 文件生成
如果你~/.ssh目錄下面有 id_rsa 和 id_rsa.pub公鑰、私鑰兩個文件,可以跳過此步驟
使用ssh-keygen命令來生成rsa秘鑰文件到~/.ssh目錄下
$ ssh-keygen -t rsa
你可以到~/.ssh目錄下查看生成的id_rsa id_rsa.pub兩個文件。
1.2 將公鑰 rsa.pub 上傳到服務器
使用ssh-copy-id命令將生成的公鑰上傳到服務器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@server -p 22
ssh-copy-id命令需要提供你服務器的登陸方式和用戶密碼。
1.3 測試是否可以免密登陸
可以通過原來的方法登陸服務器,如果登陸過程沒有要求你輸入密碼,那么說明上傳的公鑰成功了。
登陸之后,你可以到~/.ssh文件夾下面,查看authorized_keys文件,查看里面添加的公鑰是不是你上傳的。(可以檢查是否上傳正確或誤操作)
2. config 文件配置
config 文件配置可以實現給你的username、server address、port統一分配到一個別名上,那么你登陸服務器時,只需要ssh <any name here>即可登陸。
配合免密登陸,可以大大減少登陸服務器的輸入操作。
2.1 創建 config 文件
在~/.ssh目錄下創建 config 文件
$ cd ~/.ssh
$ touch config
2.2 配置 config 文件
config 文件的配置格式如下
# 其模板如下 Host <any name here> HostName <your server address> Port <22> User <username> IdentitiesOnly yes # 一個具體的例子 Host aliyun HostName 192.168.21.43 Port 22 User vkso IdentitiesOnly yes
如上配置成功后,如果我想登陸這個aliyun服務器,那么我只需要在命令行輸入如下命令即可免密登陸
$ ssh aliyun
3. 總結
通過免密登陸和配置文件,可以大大減少登陸服務器時候的操作次數。對於擁有多台服務器的運維人員來說,應該是必備技能哈~
