在以前的文章当中咱们建立了Azure的Linux虚拟机,而且经过密码的方式进行了远程登录。可是,因为在网络传输当中进行密码的输入,毕竟不×××全,并且每次链接的时候须要输入很长的机器名称。使用起来着实比较麻烦。下面介绍一下如何在Azure的虚拟机上建立用户,而且经过本地进行ssh 免密码登录。javascript
链接到Azure的服务器,使用adduser 进行用户的建立。(以前有描述在linux上使用useradd和adduser添加用户的区别。)java
root@ScottUbuntu:~# adduser sshuser
在输入密码和确认密码后,即完成了sshuser的添加。
进行添加后,咱们能够从本地经过以下的命令进行登录。linux
ssh sshuser@yourdomain.chinacloudapp.cn
系统会要求输入用户名和密码。ubuntu
输入后进行了登录,可是这样的登录方式实在不方便。那么咱们须要使用到ssh的登录方式了。vim
首先咱们须要在咱们的系统上建立本身的公钥和私钥。公钥以.pub结尾,通常用于咱们上传到服务器端进行验证。安全
进入到~/.ssh. 目录。ruby
cd ~/.ssh/ ssh-keygen -t rsa -b 2048 -C "sshuser@yourmail"
而后肯定须要保存的rsa的文件名,而且输入passphase (这里强烈要求输入,有的教程里面直接让你们在这步不输入密码,这个是极度不安全的方式)bash
2.png服务器
这个时候咱们会在目录下生成2个文件,以下。网络
-rw------- 1 scottxiao staff 1.7K Dec 4 01:33 sshuser
-rw-r--r-- 1 scottxiao staff 418B Dec 4 01:33 sshuser.pub
使用ssh-copy-i 将咱们的pub 公钥传到服务器上。
ssh-copy-id -i sshuser.pub user@yourdomain
注意:这里的user name 指的是你登录的用户名,your domian指的是你的服务器地址。
成功的话,咱们能够看到以下的提示。
3.png
因为刚才建立密钥的时候输入了密码,咱们须要使用ssh-add 将咱们的密钥保存一次。
ssh-add sshuser_rsa Enter passphrase for sshuser_rsa: Identity added: sshuser_rsa (sshuser_rsa)
以后直接使用 ssh username@domianname 便可登录。
4.png
可是每次要记很长的domain名称,仍是很不方便,那么咱们一块儿来建立并配置SSH文件来解决这个问题。
touch ~/.ssh/config vim ~/.ssh/config
配置文件以下:
# Azure KeysHost sshuser Hostname scottubuntu.chinacloudapp.cn User sshuser# ./Azure Keys# Default SettingsHost * PubkeyAuthentication=yes IdentitiesOnly=yes ServerAliveInterval=60 ServerAliveCountMax=30 ControlMaster auto ControlPersist 4h IdentityFile ~/.ssh/sshuser_rsa
注: Host 表示你以后想要使用的服务器登录简写, hostname表示服务器IP或者DNS,user 表示要登录的用户名, IdentifyFile表示使用的密钥。
最后效果以下:
5.png
附上ssh-keygen 的说明
命令解释
ssh-keygen= 用于建立密钥的程序
-t rsa= 要建立的密钥类型,即 [RSA 格式](https://en.wikipedia.org/wiki/RSA_(cryptosystem)-b 2048 = 密钥的位数-C "ahmet@fedoraVMAzure" = 追加到公钥文件末尾以便于识别的注释。一般以电子邮件做为注释,但也可使用任何最适合基础结构的事物。