這個問題本來覺得是個特別簡單的問題,昨天弄的時候折騰了半晚上。所以打算記錄下過程,主要也被網上的各種信息誤導了。
1
先看下我這vagrant配置信息
Vagrant.configure("2") do |config|
config.vm.box = "base"
config.vm.box_check_update = false
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.0.1"
config.vm.synced_folder "/data/www", "/data/www"
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
end
發現沒有登錄信息,然后網上查了下資料說是默認的登錄用戶名是vagrant,密碼一樣。就像下面。
config.ssh.username = "vagrant"
config.ssh.password = "vagrant"
配置上上面的信息然后 vagrant ssh登錄,發現登錄正常沒有問題。修改root的密碼。
sudo -s
passwd
改完之后按照網上信息修改
vim /etc/ssh/sshd_config
PermitRootLogin prohibit-password
改為
PermitRootLogin yes
重啟ssh服務
service sshd restart
退出,修改vagrant登錄信息
config.ssh.username = "root"
config.ssh.password = "密碼"
然后
vagrant ssh
提示
root@127.0.0.1: Permission denied (publickey).
不允許登錄。一直沒搞明白。后來又仔細看了下
/etc/ssh/sshd_config
發現有個關於密碼的配置
PasswordAuthentication no
意思應該是密碼授權,打開這個配置試試
PasswordAuthentication yes
記着重啟服務
service sshd restart
然后改配置用戶名
config.ssh.username = "root"
config.ssh.password = "密碼"
這次看着是對了,提示輸入root密碼,輸入完之后,就可以直接登錄了。
2
等等,我不是配置密碼了么?為什么還提示我輸入密碼
config.ssh.password = "密碼"
換成 vagrant 用戶名,試着注釋掉密碼配置,照樣正常登錄。在換成root用戶名,注釋掉密碼配置,提示輸入密碼,說明密碼登錄的配置沒有實際意義,配不配置都需要手動輸入密碼。
但是,vagrant用戶為什么可以不需要密碼直接登錄,可能vagrant默認是秘鑰登錄的。使用vagrant賬號登錄看看vagrant的秘鑰登錄配置。
vim ~/.ssh/authorized_keys
果然有秘鑰配飾
JbDoShF6plkIvZfV1ol3OMGYRtG8V/fYOCgfv9VBHmBVda+yIuybtD vagrant
證實了我們的猜測,vagrant默認是秘鑰登錄,密碼配置沒有任何意義。
那我們怎么將我們的root用戶也改為秘鑰登錄呢?
下面我們看下配置步驟
首先使用 root輸密碼登錄
vim /etc/ssh/sshd_config
打開兩個關於秘鑰的配置
RSAAuthentication yes
PubkeyAuthentication yes
配置公鑰
vim ~/.ssh/authorized_keys
將自己的公鑰添加到這里。
重啟服務
service sshd restart
exit
退出虛擬機
修改vagrant配置數據,注釋密碼,加上私鑰地址,
config.ssh.username = "root"
#config.ssh.password = "vagrant"
config.ssh.private_key_path = "/Users/XXX/.ssh/id_rsa"
不出意外,就可以跟vagrant用戶一樣免密登錄了。
有時候會提示輸入私鑰密碼,說明沒有找到私鑰地址,做下添加私鑰的操作就可以了。
sudo ssh-add -K ~/.ssh/id_rsa
是不是就可以秘鑰免密登錄了???