Ubuntu配置ssh并实现Putty密钥登陆、禁止密码登陆、更改ssh端口

设置字体大小:

最近在研究如何完整的迁移Wordpress站点,而我买的那个vps这几天正在迁移节点无法访问,只能自己在虚拟机里测试了。新建了一个UbuntuServer虚拟机,打开后只有一个黑框框,不过不能上翻,也不能复制粘贴,觉得很不方便,就想着配置一个ssh用Putty来登陆。本篇就讲一下配置的过程和用密钥登陆。

1.更新apt源

apt-get update

更新一下apt包的软件源,这是拿到新的Ubuntu机器后必做的。方便后面下软件。当然最好把所有的已经安装的软件给更新一下:

apt-get upgrade

2.下载openssh-server

apt-get install openssh-server

3.安装完成后查看sshd是否运行

ps -e | grep sshd

ps命令是列出进程,grep 是一个强大的查找命令,这条命令的意思就是查找进程中含有sshd的,并显示出来,如图:

显示sshd服务已经运行,就可以用ssh客户端去连接了。如果没有,说明sshd服务没有启动,需要手动执行

service sshd start
#或者是:
/etc/init.d/ssh start

去启动ssh,启动后再次查看进程中是否有sshd。

4.用Putty登陆ssh

Putty是windows下很好用的一个ssh客户端。从它的官网可以下载安装包,推荐用官方的安装包安装,这样才会安装Puttygen。

我们打开Putty,在主界面填写ssh服务器的ip地址或者解析到该ip的一个域名。端口默认为22.下面的“saved sessions”添上一个名字,点旁边的save,这个ssh配置就会被保存下来,之后打开Putty就能在方框中直接双击登陆了。保存后点最下面的open就会打开一个黑窗口。

Putty的主界面

如果你是第一次登陆到这个主机,客户端会出现一个警告,提示你Putty的缓存中没有该服务器,问你是否要信任此服务器。点“是”就行了。

点了“是”之后就出现了输入登陆用户名的命令:

login as :

输入要登陆的用户名后回车,会让你输入该用户名的密码,注意,在输入密码的时候光标没有任何变化,输完回车就行了。如果用户名和密码正确,就会显示欢迎信息,表示已经登陆到该服务器。

指定用户名登陆ssh

5.以root用户登陆ssh

openssh默认是禁止以root用户登陆ssh的,以root登陆会提示你权限禁止:

login as: root
root@192.168.106.139's password:
Access denied
root@192.168.106.139's password:

这样是为了安全着想。如果真的需要以root用户登陆的话就要更改服务器端的ssh配置文件:/etc/ssh/sshd_config。

sudo vim /etc/ssh/sshd_config
#找到以下部分:
# Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes

#将PermitRootLogin 后面的值改为 yse,即:
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

#   改完后执行:
service sshd restart
#重启ssh服务
更改PermitRootLogin

改了之后再用Putty以root用户登陆该服务器,输入密码就可以登陆了。

6.用密钥证书自动登陆ssh并禁用密码登陆

为了安全起见,最好关闭ssh的密码登陆,改用密钥登陆,也可以改变ssh的默认端口,改的大一点,因为黑客们最喜欢攻击一个服务器的22端口了。

  • 开启密钥登陆

还是打开/etc/ssh/sshd_config,找到如下内容:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

#如果这三行的前面有“#”,把“#”删掉  

如果没有 这三行,加上就行。

  • 生成密钥

    你想把密钥用于哪个用户登陆就切换到哪个用户,比如我想用于ydy用户登陆,就先切换到ydy用户:

    su ydy
    

    然后执行:

    ydy@ubuntu:~$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/ydy/.ssh/id_rsa):      //默认的即可,直接回车
    Created directory '/home/ydy/.ssh'.
    Enter passphrase (empty for no passphrase):  //为密钥创建密码,每次用密钥登陆时要输入这个密码,不输入直接回车不设定密钥密码
    Enter same passphrase again:   //再次输入密钥密码,如果不设定留空直接回车
    Your identification has been saved in /home/ydy/.ssh/id_rsa.
    Your public key has been saved in /home/ydy/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Pp0aop3W6efU+7c488cqFAUnlU/bsW7JJ/tSDFDN7QE ydy@ubuntu
    The key's randomart image is:
    +---[RSA 2048]----+
    |            oE=+.|
    |            .ooo=|
    |             o +*|
    |            . .o+|
    |        S    .oo.|
    |       . . o. .=+|
    |      ..+.+.. .=.|
    |     o.oo=. .++ +|
    |    ..o.oo. .+*B+|
    +----[SHA256]-----+
    
    

    到这里密钥生成完毕,生成了两个密钥文件:id_rsa(私钥) id_rsa.pub(公钥)它们保存的位置在上面的命令行里已经给出了。进入到该目录

    cd ~/.ssh/
    ydy@ubuntu:~/.ssh$ ls -a
    .  ..  id_rsa  id_rsa.pub
    

    可以看到这两个密钥文件,将公钥id_rsa.pub改名为:authorized_keys

    ydy@ubuntu:~/.ssh$ cp id_rsa.pub authorized_keys
    ydy@ubuntu:~/.ssh$ ls -a
    .  ..  authorized_keys  id_rsa  id_rsa.pub
    

     

    将私钥id_rsa通过ftp等方式保存到本地(请妥善保存该文件)保存了之后务必把服务器上的给删掉,以免被人偷去。

  • 将私钥导出为Putty支持的格式

    直接从服务器保存下来的私钥文件Putty并不支持,需要用Puttygen将私钥文件改为ppk格式的。

    首先打开Puttygen这个软件,在主界面点“load”

选择保存到本地的id_rsa文件(如果在服务器端生成的时候设置了密钥密码,在这里需要输入密码),

出来一个提示:

根据提示可知我们要点“Save private key”来保存为Putty支持的格式。点确定,回到主界面,点击“load”下面的“Save private key”,选择要保存的位置即可。

  • 将Putty设置为用私钥登陆

    打开Putty,在 Session 中输入服务器的 IP 地址,在 Connection->SSH->Auth 下点击 Browse 按钮,选择刚才生成好的私钥。然后回到 Connection 选项,在 data下的Auto-login username 中输入密钥所属的用户名(在本篇文章中我用的是ydy)。回到 Session 选项卡,输入个名字点 Save 保存下这个 Session。点击底部的 Open 应该就可以通过证书认证登录到服务器了。如果有 passphrase (密钥密码)的话,登录过程中会要求输入 passphrase,否则将会直接登录到服务器上,非常的方便。

    选择私钥位置
    直接登陆完成

     

  • 关闭ssh密码登陆、更改端口

    密钥登陆成功后我们就可以禁止ssh密码登陆,同时改变默认的ssh端口,这样可以避免黑客们暴力破解密码。

还是编辑/etc/ssh/sshd_config 文件,找到如下内容:

# Change to no to disable tunnelled clear text passwords  //更改为“no”可以禁止密码登陆
PasswordAuthentication yes

# What ports, IPs and protocols we listen for    //ssh监听的端口,可以改为自定义的数字(0-65535)
Port 22

把PasswordAuthtication后面的值改为“no”,把Port的值改为自定义的数字,比如我的改为:

# What ports, IPs and protocols we listen for
Port 2233

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

保存退出,重启ssh服务

/etc/init.d/ssh restart
#或者
service sshd restart

在Putty里更新一下ssh的端口,打开,输入要登陆的用户名“ydy”,可以看到直接用私钥登陆了,如果我输入的用户名是“root”,它会先提示我“Server refused our key”,说明我保存的私钥不是用于登陆root用户的,然后就会出来一个警告:

而不是正常情况下的会让你输入root的密码。这样就做到了禁止用户以密码登陆。如果我输入的用户名是”ydy”,就直接用私钥登陆成功,很方便,也很安全。前提是你要保存好这个私钥。


赞 (0)   -->微信赞赏<--

微信扫描下方左侧二维码或搜索“sunriseydy”关注我的公众号,便捷地阅读博客内容,订阅博客更新
也可以扫描下方右侧的小程序码,进入我的微信小程序:“sunriseydy”,在手机上阅读文章

      

版权说明:

知识共享许可协议
作品 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者和出处。部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢
Email:i@mail.sunriseydy.top

评论一下呗亲

电子邮件地址不会被公开。 必填项已用*标注

添加表情