本文最初发表于 我的个人站点
更详细的解释可以参考 SSH百度百科
简单来理解,就是我拥有一台服务器,我现在想要登录上去做一些事情,那就得使用ssh登录到远程的服务器上,才能在上面进行操作。
一开始在远程服务器上面,需要查看一下他的sshd服务启动了没有,如果没有启动,任何客户端主机是连接不上来的,一般如果是自己在云厂商处购买了主机,主机启动的时候就会把sshd服务启动起来。但有可能自己在测试环境搭建机器的时候,是没有默认启动的,这时候就需要在测试机器的终端看一下,命令如下
如果没有启动的话,那就启动一下,命令如下
这里我在测试环境机器的ip是 192.168.0.187, 我在自己的电脑上想要登录这台机器,我要做的就是使用ssh命令去登录192.168.0.187这台主机
我需要告诉192.168.0.187这台主机我以谁的身份去登录, 192.168.0.187会询问密码,命令如下
敲入正确的密码之后,我们就已经成功登录了主机了
这里看到让我输入一个文件名字来保存密匙,我这里示例就输入一个"foxchao"
回车以后,询问是否要输入一个密码来保护这个密匙,为了方便起见,我就不输入了,不然每次使用这个密匙文件还要输一遍密码,直接一路回车就ok,如下所示
到了这里,可以看到我们已经创建好了密匙对
现在我们新建了自己的密匙对之后,把foxchao.pub这个文件放到目标的机器上,加入目标机器的 authorized_keys 中就可以了,以后登录的时候就可以免去输入密码的步骤。
那我们先用scp放上去 ,关于scp命令,这里不过多介绍,就是传文件的一个命令,使用也比较简单,具体想了解可以看这里 Linux scp命令
这里表示我要把foxchao.pub这个文件拷贝到192.168.0.187这台机器root用户的用户目录下
回车之后会询问密码,输入密码确认之后,文件就传上去了,如下
这时候我们先用密码登上去看看传上去没有
可以看到foxchao.pub这个文件已经传上来了
目标主机上如果没有.ssh文件夹,就自己创建一个,创建好之后,再创建一个authorized_keys文件。如果有的话就不用了。
把刚才的foxchao.pub这个文件内容写进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 为Secure Shell的缩写,是一款较可靠,专为远程登录会话和其他网络服务提供安全性的协议。且ssh适用性强,几乎适用于所有的UNIX平台。一、检查SSH的安装
在使用SSH之前,我们必须检查电脑中是否已经安装了客户端openssh-client以及服务器openssh-server,我们可以使用 dpgk --l | grep ssh 来进行查看。
如果显示中拥有openssh-client和openssh-server,说明电脑已经安装了客户端和服务端。
二、安装openssh-client和openssh-server
sudo apt-getinstall openssh-client #安装客户端client sudo apt-getinstall openssh-server #安装服务端server
三、启动服务器SSH
启动SSH分两步。第一步是查看ssh-server当前状态,指令为 ps -e | grep ssh
一旦出现sshd,说明ssh-server当前处于启动状态。
启动、停止、重启ssh-server的指令为
sudo /etc/init.d/ssh start#server启动ssh服务 sudo/etc/init.d/ssh stop #server停止ssh服务 sudo/etc/init.d/ssh restart #server重启ssh服务
四、获取服务器IP地址
此过程略。不同的设备方法不太一样难以统一,请搜索对应的方法。
五、使用SSH远程登录服务器
口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址
例如我的树莓派名为root@,我的树莓派IP为192.168.1.111,那么我使用口令登录树莓派就要输入
ssh root@192.168.111
这样就可以登录了。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文主要介绍OpenSSH免费开源实现在Ubuntu中的应用,如果要在Windows中使用SSH,需要使用另一个软件PuTTY。
SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。
传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:
口令登录非常简单,只需要一条命令
还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如:
首先使用ssh-keygen命令生成密钥对
然后根据提示一步步的按enter键即可,执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub 。
(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,如果为了免密登陆可以不设置。)
使用 ssh-copy-id 命令将公钥复制到远程主机
ssh-copy-id会将公钥写到远程主机的 /root/ .ssh/authorized_key 文件中
使用ssh-copy-id命令登陆哪个用户就会存放在哪个用户的home目录下。
也可以手动复制到authorized_key文件当中。
第一次登录时,会提示用户
意思是无法验证用户的公钥,是否正确,询问用户是否要继续。
ECDSA key给出了远程主机公钥的SHA256编码过的值,一般在远程主机的网站会告示公钥的值,
用户可以将这个公钥和网站上的公钥进行比对,正确则表明是远程主机。
输入yes之后,系统会将公钥加入到已知的主机列表,如下所示,已知列表中的主机,下次不会再询问。
SSH的配置文件通常在 /etc/ssh/sshd_config
配置文件中有非常详尽的注释,一般在工作中主要用到的几个配置
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)