您的位置:首页 > 理论基础

ubuntu系统远程登录linux计算机

2016-11-06 14:22 267 查看
通过ssh实现远程登录linux计算机,并且可以执行命令

ssh是一种安全协议,主要对其的使用一般在远程登录(如A电脑通过命令行远程操作B电脑)和为其他网络服务提供安全协议(常见的如sftp)


两台机器通过ssh建立链接的大概流程

首先,ssh由客户端和服务器端组成,若电脑A想要通过ssh远程控制电脑B,A则为客户端,B则为服务端

接下来,A通过客户端进程向B机器发送链接请求,B机器的服务端进程接收到请求,进行验证等其他操作与A建立链接

至此,电脑A能够远程操作电脑B

开始配置

安装客户端程序

ubuntu系统自带有ssh-client,使用ssh命令即可发起连接请求


安装服务端程序

在被登录的linux电脑上执行

$ sudo apt-get update                         //更新一下apt
$ sudo apt-get install openssh-server         //安装ssh服务器程序


安装完成后,可以尝试登录本机

$ shh localhost


首次登录会有个询问,输入yes,回车

{% asset_img ssh登录本机.png 询问 %}

这时候会提示输入密码,输入当前用户的登陆密码,回车,登录成功

{% asset_img ssh.png 登录到本机 %}

输入exit退出登录

此时ssh程序的安装就完事了

开始远程登录

执行,图中ip一样替换成想要登录的服务端ip

{% asset_img ssh无参数.png ssh无参数登录 %}

此时,ssh 会尝试用当前用户作为用户名来登录服务端电脑,即上图中尝试使用nairoj这个用户名登录目标电脑,如果目标电脑没有nairoj这个用户呢?

使用-l参数指定要登录的用户,指定用root账户登录:

{% asset_img sshroot.png 指定用户名 %}

接下来输入密码,登录成功!

{% asset_img sshrootlogin.jpg root登录成功 %}

上图最后一行

root@iZm5ec880z2roqeog3q978Z:~#


说明此时命令行已经相当于目标机的命令行了,

在这上面执行的命令即为在目标机上执行~

免密码登录

ssh提供了两种验证方式

密码验证

密钥验证

上面登录的方式就是密码验证,只要知道目标机的用户密码就可以登录,这种验证方式的有一个缺点,不能保证客户机连接上的就是目标机,可能存在有‘中间人’, 还有就是每次登录都需要输入密码。

再说一下密钥验证的登录方式:

1.先
exit
退出刚刚的远程登录状态,回到本机

2.客户机采用非对称加密算法rsa建立一对密钥(一个公钥,一个私钥)

$ cd ~/.ssh/                  #~表示用户目录,即‘/usr/你的用户名/’
$ ssh-keygen -t rsa #用rsa算法建立一对密钥,中间的提示一直按回车即可


说明:

若不存在.ssh文件夹,先执行一次
ssh localhost


非对称加密算法生成的密钥,公钥加密的文件只有密钥能解密,私钥加密的文件只有公钥能解密

上面的命令执行完,在.ssh文件下有多出两个文件
id_rsa
id_rsa.pub
.pub
后缀的文件即为公钥

3.将公钥上传到服务端的(这里将公钥上传到用户目录下),

这里会要求输入目标机用户的登陆密码

#将user替换成要登录的用户名,ip替换成服务机的ip地址
$ scp ~/.ssh/id_rsa.pub user@ip:/home/user/


出现下图即为传输成功,

{% asset_img sshtran.png 公钥传输完毕 %}

此时在服务端机器的用户目录下,可以找到这个文件

4.用密码登录的方式远程登录服务端,将公钥加入授权

$ ssh -l user ip     # 登录,这里会要求输入密码
$ mkdir ~/.ssh       # 如果不存在该文件夹需先创建,若已存在则忽略
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
#将用户目录下的客户机公钥加入授权
$ exit               #退出登录,回到本机


5.此时已经可以使用密钥验证的方式登录服务端电脑了

$ ssh -l user ip


这一次不会要求输入密码,直接登录成功

这种验证方式的原理在于:将客户机A的公钥存入服务机,当客户机A发起ssh登录的请求时,服务机生成一个随机数X,用A的公钥加密随机数X后发给A,
A用自己的密钥解密发来的数据后,将解密得到的随机数发回给服务机
如果发回的随机数与X相同,则验证成功,实现远程登录且不用人工输入密码


最后

因为每次登录都输入ip很麻烦,可以将经常登录的ip写到
/ect/hosts
文件

$ sudo gedit /ect/hosts


在其中写入自己常用的ip和并且给它取个名字,保存

{% asset_img sship.png sship%}

上图的144.111.111.56 即为常用的ip,myesc 是给它取得别名

以后进行远程登陆时,执行

$sudo -l user myesc


就可以进行远程登录

参考资料

http://www.powerxing.com/install-hadoop/

http://www.linuxidc.com/Linux/2012-12/76277.htm

http://baike.baidu.com/link?url=20nZ-d-z36mEtUAFrc6ddHReyKm7E9Aw88BVrY69rTkFXugQ1NOFcnImzHMIDNXZYWUnOQiLrNh7QrxtN6iu1_

第一次写博文,错误的不通顺的无法理解的地方欢迎指出,文笔是真烂 = =
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 linux