SSH连接Ubuntu Server服务器的两种方式
SSH(secure shell)用于远程和服务器交互
Ubuntu Server默认安装了OpenSSH Server,可通过端口22连接
SSH客户端可以用用户名密码的方式连接服务器,也可以用密钥对的方式连接服务器。
可以使用SSH客户端工具PuTTY,windows10自带的SSH工具,或者VMWare的SSH工具连接服务器
1在命令行用 用户名和密码连接
ssh username@serveraddress
2SSH客户端还可以用 密码对 (公钥和私钥)连接
这里使用Win10自带的工具
生成密钥对
运行命令:ssh-keygen
添加公钥
打开生成的公钥文件id_rsapub,复制全部内容
使用SSH密码登录的方式登录Ubuntu服务器,在当前用户目录创建文件夹ssh,进入ssh文件夹并创建文件authorized_keys,粘贴从公钥复制的内容并保存文件
修改SSH配置
修改Ubuntu Server的文件:
/etc/ssh/sshd_config
将PubkeyAuthentication yes前面的注释去掉
运行命令重启sshd服务
sudo systemctl restart sshd
退出SSH连接,重新用私钥登录登录
ssh <username>@<serveraddress> -i <私钥路径>
默认配置
Windows下有很多SSH工具。在这里我是用的是Putty。如果安装了Git并配置使用Putty的话,就不需要另外在安装Putty了。使用SSH连接服务器的命令如下:
ssh IP地址1
一般来说为了安全性考虑,端口号等一些参数并不会使用默认值。这样的话命令就变成这样:
ssh 用户名@IP地址 -p 端口号1
如果连接成功的话会提示你输入远程服务器的密码。全部成功之后SSH就会显示远程服务器的提示符,这时候就说明连接成功了。
密钥登录
每次登录SH都需要输入密码很麻烦,而且可能不太安全。SSH还能使用另外一种登录方式,也就是使用密钥登录。这种登录方式需要客户端生成一堆公钥私钥对,然后将公钥添加到服务器中,这样下次就可以直接登录了。
首先生成SSH密钥,依照提示输入信息即可。默认生成在用户主目录中的ssh文件夹中。带pub的是公钥,接下来需要添加到服务器中。
ssh-keygen1
然后将本地公钥添加到服务器中,需要使用另一个命令:
scp -P 端口号 本地文件路径 用户名@远程服务器地址:远程路径1
然后登陆服务器,找到复制进去的公钥,将公钥名字改为authorized_keys并添加到对应的ssh文件夹中。然后退出SSH重新登陆试试,成功的话不需要输入密码就会直接进入远程服务器。
使用SSH的优点:
1)利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题,也能够防止DNS欺骗和IP欺骗。
2)使用SSH传输的数据是经过压缩的,所以可以加快传输的速度 。
但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。
1在客户端(本地)生成密钥对
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录,这里密钥锁码设置为空。完成上述步骤后,在 root 用户的家目录中生成了一个 ssh 的隐藏目录,内含两个密钥文件,其中id_rsa 为私钥,id_rsapub 为公钥。
本文最初发表于 我的个人站点
更详细的解释可以参考 SSH
简单来理解,就是我拥有一台服务器,我现在想要登录上去做一些事情,那就得使用ssh登录到远程的服务器上,才能在上面进行操作。
一开始在远程服务器上面,需要查看一下他的sshd服务启动了没有,如果没有启动,任何客户端主机是连接不上来的,一般如果是自己在云厂商处购买了主机,主机启动的时候就会把sshd服务启动起来。但有可能自己在测试环境搭建机器的时候,是没有默认启动的,这时候就需要在测试机器的终端看一下,命令如下
如果没有启动的话,那就启动一下,命令如下
这里我在测试环境机器的ip是 1921680187, 我在自己的电脑上想要登录这台机器,我要做的就是使用ssh命令去登录1921680187这台主机
我需要告诉1921680187这台主机我以谁的身份去登录, 1921680187会询问密码,命令如下
敲入正确的密码之后,我们就已经成功登录了主机了
这里看到让我输入一个文件名字来保存密匙,我这里示例就输入一个"foxchao"
回车以后,询问是否要输入一个密码来保护这个密匙,为了方便起见,我就不输入了,不然每次使用这个密匙文件还要输一遍密码,直接一路回车就ok,如下所示
到了这里,可以看到我们已经创建好了密匙对
现在我们新建了自己的密匙对之后,把foxchaopub这个文件放到目标的机器上,加入目标机器的 authorized_keys 中就可以了,以后登录的时候就可以免去输入密码的步骤。
那我们先用scp放上去 ,关于scp命令,这里不过多介绍,就是传文件的一个命令,使用也比较简单,具体想了解可以看这里 Linux scp命令
这里表示我要把foxchaopub这个文件拷贝到1921680187这台机器root用户的用户目录下
回车之后会询问密码,输入密码确认之后,文件就传上去了,如下
这时候我们先用密码登上去看看传上去没有
可以看到foxchaopub这个文件已经传上来了
目标主机上如果没有ssh文件夹,就自己创建一个,创建好之后,再创建一个authorized_keys文件。如果有的话就不用了。
把刚才的foxchaopub这个文件内容写进authorized_keys
看一下,已经有内容了
这里需要注意
authorized_keys 文件对权限有哟求,必须是600(-rw——-)或者644
ssh目录 必须是700(drwx——),否则一会儿登录不成功
弄完之后检查一下权限,如果不是的话,改成响应的权限就ok了
在登录之前,要确认一下目标主机是否允许密匙对登录,一般都是打开的,如果没有打开就自己打开
(查看 /etc/ssh/sshd_config 文件内容 中的 PubkeyAuthentication 这一项是否为 yes,如果不是就自己修改成yes之后重启sshd服务 )
为了避免繁琐的每次都敲一长串 user@host 这样的命令, 可以自己在ssh 目录下建一个config文件,文件内容如下,想要多了解一下配置参数使用的,可以看 linux ssh_config和sshd_config配置文件
文件建立好之后,直接使用自己定义的别名登录,非常方便快捷
如果是自己局域网搭建的机器,倒不用在意服务器的安全问题,但如果是暴露在公网上的机器,可以通过公网ip登录的,一定要注意自己服务器的安全问题,最起码不能开放默认端口,以及密码登录
在服务器上查看一下登录的日志,可以看到很多想要尝试登陆机器的人,所以公网上面的机器一定要做好自我保护
这里只列出一小部分的日志
统计一下,可以看到有29190次登录失败的记录
我们改掉默认的端口,以及禁用密码登录,只支持密匙对登录,这样一来,提高了服务器本身的安全性,至少没那么容易被别人登录上来为所欲为。
在服务器上修改sshd的配置文件
保存之后,重启sshd服务
使用自己定义的端口登录
SSH作为Linux远程连接重要的方式,如何配置安装linux系统的SSH服务,如何开启SSH?下面来看看吧(本例为centos系统演示如何开启SSH服务)
工具/原料
linux centos
查询\安装SSH服务
1登陆linux系统,打开终端命令。输入 rpm -qa |grep ssh 查找当前系统是否已经安装
2如果没有安装SSH软件包,可以通过yum 或rpm安装包进行安装(具体就不截图了)
启动SSH服务2
安装好了之后,就开启ssh服务。Ssh服务一般叫做 SSHD
命令行输入 service sshd start 可以启动
或者使用 /etc/initd/sshd start
配置\查看SSHD端口3
查看或编辑SSH服务配置文件,如 vi /etc/ssh/sshdconfig
如果要修改端口,把 port 后面默认的22端口改成别的端口即可(注意前面的#号要去掉)
远程连接SSH4
如果需要远程连接SSH,需要把22端口在防火墙上开放。
关闭防火墙,或者设置22端口例外
出自:http://jingyanbaiducom/article/08b6a591f0fafc14a9092275html
0条评论