<< Home

前几天买了个vps服务,于是玩了一把,对ssh的安全进行优化。

完全业余,仅供参考。

环境

目标

必备:vi命令

自行google,操作熟练后再去远程操作。

esc后,shift+:后,输入wq是保存退出,q!是不保存退出。

第一次登录ssh

打开Mac的终端(Terminal), 输入

ssh root@ip地址 -p 端口号

出现:

The authenticity of host '[ip地址]:端口号 ([ip地址]:端口号)' can't be established.
RSA key fingerprint is SHA256:bFmpDOKQD0LH6vQYToaLgw3OjelyPHtXw6ZfN4b5XO0.
Are you sure you want to continue connecting (yes/no)? 

填yes

Warning: Permanently added '[ip地址]:端口号' (RSA) to the list of known hosts.
Last login: Thu Aug  3 23:31:17 2017 from 本机ip地址

这时候会在本地的~/.ssh/known_hosts添加了刚刚的key,删除下次还会出现新建fingerprint的请求。

操作完之后,我们就登录到远程的ssh上了。

修改登录端口和root密码

买了vps之后,服务商会把临时的密码和ssh端口号通过邮件发送给你。 在kiwiVM Control Panel的Main controls的SSH Port项也可以看到同样的端口号和ip地址。

我们需要修改一下端口号,以root的身份登录ssh之后

更改密码:

passwd root

修改端口号:

vi /etc/ssh/sshd_config

找到最后一句,这里的端口号就是服务商邮件发给你的那个了:

Port 端口号

修改完保存之后,重启sshd服务:

service sshd restart

修改后回wikiVM能看到端口修改了,下次登录也只能用这个端口了。

新建用户

useradd -m 用户名
passwd 用户名

useradd是添加一个用户,-m是添加相关的home目录

passwd是为用户名改密码

做完之后,系统会在/home下建立一个用户名的目录。

切换用户

su 用户名

输入密码就能切换到指定的用户了。

所以当我们用自建的用户名登录后su root就能切换回root账户了。

禁用root登录

登录后,以root身份操作:

vi /etc/ssh/sshd_config

找到倒数第二句,改为no:

PermitRootLogin yes

wq保存,重启sshd服务(命令以上面)。

当前已登录的账户不会强制退出,下次登录才生效。

制作免密登录

生成密钥

在Mac本地的terminal输入

cd ~/.ssh
ssh-keygen -t rsa -C “备注随便填”

会出现

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/pengyj/.ssh/id_rsa): 【直接回车】
Enter passphrase (empty for no passphrase): 【直接回车,设置空密码】
Enter same passphrase again: 【再次直接回车,确认设置空密码】
Your identification has been saved in /Users/pengyj/.ssh/id_rsa.
Your public key has been saved in /Users/pengyj/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:GeNbn307rRFeUIQ0D38+/AId4Tb2iGF7uLCa+w4qNxw “abc”
The key's randomart image is:
+---[RSA 2048]----+
|             .=oo|
|             ..B |
|        o   o B +|
|       . + . O.B.|
|        S o = =o+|
|      E  o + B oo|
|     . .o . + = +|
|    . +. +     =o|
|     o..++o   .o.|
+----[SHA256]-----+

操作完之后,在本机的~/.ssh/下,会出现以rsa加密的公钥id_rsa.pub和私钥id_rsa

导入到服务器

使用ssh-copy-id命令,将公钥导入到服务器。

在Mac本机Terminal操作,刚刚的~/.ssh 目录下:

ssh-copy-id -i id_rsa.pub 用户名@ip地址 -p 端口号

上传成功后,后在服务器的用户名目录~/.ssh/下有一个authorized_keys文件。

在服务器端做修改权限(我一步我没确认过,因为我一开始就做了):

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

切换回root用户,或者具有root权限的用户。把以下3句注释去掉,变为:

vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys

重启sshd服务。

至此,我们已经可以免密登录了。

在本机测试,登录,确认不用密码了后,去服务器更改关闭密码登录。

vi /etc/ssh/sshd_config
PasswordAuthentication yes

优化本机登录

每次在本机登录ssh,都要输入一长串的文字,于是我们优化一下,加个alias:

bash下:

vi ~/.bash_profile
alias openvps="ssh 用户名@ip地址 -p 端口号"

保存重新载入

source ~/.bash_profile

这样我们就可以直接在本机的Terminal输入openvps就能登录到ssh了。

保存好你的私钥

完!

参考

Dave: Linux 修改SSH端口 和 禁止Root远程登陆

秋水逸冰: SSH无密码登录及putty设置

素白流殇: ssh-keygen和ssh-copy-id实现SSH无密钥登陆

简文:Mac 与服务器 ssh 无密码登录