SSH配置密钥登录
配置密钥登录一方面可以避免每次输入密码的麻烦(记住密钥文件密码的情况下),但最重要的一方面是增强安全性。
服务器上添加用户
1 | useradd -g <group> -m <username> |
设置密码
1 | passwd <username> |
本机生成密钥
1 | ssh-keygen -t rsa -b 4096 -f ~/.ssh/123.57.121.21_ali_rsa |
1 | -t rsa 指定加密方式为RSA |
输入密钥文件密码
保证密钥文件的安全,尤其是无法保证自己电脑安全的情况下,不要为空
添加到服务器端相应帐号密钥中
1 | ssh-copy-id -i ~/.ssh/123.57.121.21_ali_rsa.pub [email protected] -p 22 |
1 | -i ~/.ssh/123.57.121.21_ali_rsa.pub 指定密钥文件公钥,注意末尾的.pub,这是公钥文件,不要把私钥传上去了。。。 |
输入用户密码,添加完毕
用密钥登录,跟用密码方式命令一样
1 | ssh [email protected] -p 22 |
如果密钥文件设置了密码,会弹出输入框,输入密码即可,为了避免麻烦,选择了“记住”选项
ubuntu中,ssh会默认搜索~/.ssh/目录下的所有key文件,并在登录时首先使用该目录下的keyfile逐个尝试登录,如果该目录下keyfile过多(超过5个),可能造成所有ssh请求均无法登录问题(提示Too many authentication failures for username)。Ubuntu设置ssh密钥登录
两种密钥文件过多导致错误的解决方式:
登陆时指定密钥文件
1 | ssh -i ~/.ssh/123.57.121.21_ali_rsa.pub [email protected] -p 22 |
配置config文件(推荐)
1 | vim ~/.ssh/config |
如果没有该文件,新建就行
按照如下格式添加
1 | Host <name> #别名 |
配置完毕之后,就可以使用
1 | ssh <name> |
命令直接登陆了,方便快捷
简单的安全设置(要以 root 权限运行)
1 | vim /etc/ssh/ssh_config |
修改相关条目,不存在的新建,前面的#号删除
禁止密码登录
有了密钥登录之后,密码登录就用不着了
PasswordAuthentication no
禁止root用户直接登录
PermitRootLogin no
修改端口
Port 12345
限制协议版本,取消支持低版本协议
Protocal 2
限制登录尝试次数
MaxAuthTries 3
详细:(http://www.freebsd.org/cgi/man.cgi?query=sshd_config&sektion=5&n=1
更强的安全设置参考IBM的文章
可能会遇到的问题
新建帐号登录后终端前面只有一个 “$” 符号,而不是user@host 形式。
原因:没有指定bash
解决方式:
a.输入bash
b.管理员用户编辑配置文件 /etc/passwd
找到该帐号所在行,在末尾添加/bin/bash