鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

SSH配置密钥登录以及简单的安全设置

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
2
3
4
5
6
7
-t rsa 指定加密方式为RSA

-b 4096 密钥长度(bit)

-f 指定密钥文件名

各个参数都可以不填,使用默认参数
输入密钥文件密码

保证密钥文件的安全,尤其是无法保证自己电脑安全的情况下,不要为空

添加到服务器端相应帐号密钥中

1
ssh-copy-id -i ~/.ssh/123.57.121.21_ali_rsa.pub [email protected] -p 22
1
2
3
-i ~/.ssh/123.57.121.21_ali_rsa.pub 指定密钥文件公钥,注意末尾的.pub,这是公钥文件,不要把私钥传上去了。。。

[email protected] -p 22, 指定用户名、主机、端口
输入用户密码,添加完毕

用密钥登录,跟用密码方式命令一样

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
2
3
4
5
6
7
8
Host <name> #别名
HostName <ip> #这里填IP

Port <port> #服务器端口

User <user> #服务器端对应的用户名

IdentityFile ~/.ssh/123.57.121.21_ali_rsa.pub #密钥文件

配置完毕之后,就可以使用

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的文章

保护 SSH 的三把锁

SSH 安全性和配置入门

可能会遇到的问题

新建帐号登录后终端前面只有一个 “$” 符号,而不是user@host 形式。

原因:没有指定bash

解决方式:

a.输入bash

b.管理员用户编辑配置文件 /etc/passwd 找到该帐号所在行,在末尾添加/bin/bash