配置远程服务器SSH
首先配置一下SSH配置使其能够支持无密码登陆:
# vim /etc/ssh/sshd_config
把sshd_config以下几行注释去掉(即去掉“#”)
1 2 3 4 5 6 7 8 9 |
#禁用root账户登录 PermitRootLogin no RSAAuthentication=yes PubkeyAuthentication=yes AuthorizedKeysFile=.ssh/authorized_keys #使用者的 ~.ssh/ 权限设错时,但某些特殊情况下会不许用户登入 StrictModes no #禁用密码登录 PasswordAuthentication no |
如果主目录下.ssh文件夹,则创建一个authorized_keys文件,设置好文件权限。
1 2 3 |
# chmod 700 -R .ssh # cd .ssh/ # chmod 600 authorized_keys |
配置本地主机
(1)使用PuTTY
经常在Windows下使用PuTTY登录Linux,使用无密码登录显得尤为方便。
使用PuTTYgen生成公钥和私钥
随机移动鼠标生成公钥,然后选中并复制公钥写入到~/.ssh/authorized_keys文件(否则因格式不配备出现“Server Refused Our Key”的错误),并保存好私钥:
设定好PuTTY设置:
使用生成的私钥进行远程登录:
设定自动登录的用户:
(2)使用Xshell
在[工具]菜单选择[用户密钥管理者]以打开用户秘钥对话框,点击“生成”:
加密生成的私钥:
把生成的公钥发给系统管理员写入到~/.ssh/authorized_keys:
可以导出私钥,妥善保存:
(3)客户端为Mac/Linux
使用下例中ssky-keygen和ssh-copy-id,仅需通过两个步骤的简单设置而无需输入密码就能登录远程Linux主机。 使用ssh-keygen 创建公钥和密钥。 使用ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。通过ssh-copy-id,它会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys自动设置合适的权限。
Step 1: 检查SSH密钥是否存在
1 2 |
$ cd ~/.ssh $ ls *.pub |
Step 2: 生成一个SSH密钥
1 2 3 |
$ ssh-keygen -t rsa -C "email@example.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter] |
这里你可以选择使用密码加密私钥,到时你在远程登录时输入此密码即可。当然默认留空,你直接直接按回车键确认。
1 2 |
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again] |
现在你的SSH密钥已经生成,会有以下信息提示.
1 2 3 4 |
Your identification has been saved in /Users/your_username/.ssh/id_rsa. Your public key has been saved in /Users/your_username/.ssh/id_rsa.pub. The key fingerprint is: 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db email@example.com |
Step 3: 添加本地公钥添加至远程服务器
使用ssh-copy-id把公钥复制到远程主机上。或者手动读取你本机生成的公钥,将它添加到远程服务器下的“./ssh/authorized_keys”
注意:-p: 如果已经更改SSH端口,请指定访问端口 ; 如果省略该参数 , 则默认访问 SSH 服务的默认端口 22。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
方法一: # ~ ssh-copy-id -i ~/.ssh/id_rsa.pub '-p port(端口号) username@romote-server' /usr/local/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@romote-server's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh -p 'port(端口号)' 'root@romote-server'" and check to make sure that only the key(s) you wanted were added. 方法二: ##读取本地主机公钥 $ cat ~/.ssh/id_rsa.pub ##将其添加至远程主机下 $ vim ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys ##将权限改为600 方法三: 如果本机未安装SSH-COPY-ID(如Mac就没有),可以用以下方法 $ cat ~/.ssh/id_rsa.pub | ssh -p port(端口号) user@machine “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys” |
Step 4: 登录远程服务器
本地主机输入以下命令登录,如果配置正确,可以不用密码即可登录。
1 |
$ ssh -p port user@romotehost |
拓展阅读: