前言
ssh是标准网络协议,实现Unix系统远程登录,默认端口22,采用密文形式在网络中传输数据;
相对于明文传输的Telnet,具有更高的安全性;
基于ssh协议产生了ssh客户端、ssh服务器等软件,客户端、服务之间通过ssh协议传输数据;
ssh客户端、服务器
ssh客户端有两种方式登录服务器:口令 和 密钥
第一种:口令
需要用户名、密码,这要求密码具有足够的复杂度才能获取更高的安全性
这里的用户名、密码是服务器的用户名、密码
sudo ssh rocketv2@192.168.2.11 // ssh 用户名@服务器ip 回车后输入密码
第二种:密钥
简单解释原理:
首先,在客户端创建一对公钥、私钥[公钥文件位置:~/.ssh/id_rsa.pub 私钥文件位置:~/.ssh/id_rsa];
其次,把客户端生成的公钥放到ssh服务器中[位置:~/.ssh/authorized_keys],同时保存好私钥;
最后,在使用ssh登录时,ssh客户端会把发送私钥 跟 服务器中的公钥匹配,如果匹配成功就可以登录了;
ssh客户端登录ssh服务器
由于口令方式上文已讲解过,现在只介绍秘钥方式
第一步:
客户端生成公钥、私钥对(记住公私钥对的位置以及名称)
ssh-keygen -t rsa //一直回车,就会在“~/.ssh/”下生成“id_rsa、id_rsa.pub”两个文件
//注意:回车的过程 需要设置密码,一直回车就是默认密码为空 // 这个密码是对私钥的设置,应该设置成ssh服务器的登录密码;一般默认不设置;
第二步:
将ssh客户端生成的公钥放到ssh服务器中:可以使用命令的方式、U盘拷贝
scp ~/.ssh/id_rsa.pub rocketv2@192.168.2.11:/root/ //公钥文件传到/root下
在ssh服务器上,将公钥中的内容放到~/.ssh/authorized_keys文件中(如果没有.ssh或者authorized_keys文件,手动创建);
第二步中的所有操作,可以使用ssh-copy-id 命令一步到位,在.ssh目录中,使用命令时,会将公钥上传至服务器并创建.ssh/authorized_keys
ssh-copy-id root@192.168.2.11 //将公钥上传到服务器,创建.ssh/authorized_keys文件
第三步:
在客户端登录ssh服务器
ssh rocketv2@192.168.2.11 //无密码登录
ssh客户端、服务器安装 (ubuntu 16.04 LTS)
客户端安装
1.安装(ssh配置文件在/etc/ssh/ssh_config)客户端一般随系统安装
sudo apt-get install openssh-client //安装客户端
服务器安装
1.安装 (ssh-server配置文件在/etc/ssh/sshd_config)
sudo apt-get install openssh-server
2.检测版本
sudo ssh -V
3.检查、开启、关闭服务
ps -e | grep ssh //检查 如果有ssh-server说明已经启动,否则使用 sudo /etc/init.d/ssh start启动
sudo /etc/init.d/ssh restart 或者 sudo service sshd restart //重启ssh服务
sudo /etc/init.d/ssh stop 或者 sudo service sshd stop //关闭服务
sudo /etc/init.d/ssh start 或者 sudo service sshd start //开启服务
SSH方式登陆报错
在ubuntu终端中使用ssh连接远程服务器,登陆失败
/home/用户/ .ssh/ known_hosts
/etc/ssh ssh_config
报错一:
按照报错中的提示:ssh-keygen -f "/home/xubiao/.ssh/known_hosts" -R 107.xxx.xxx.xxx
远程主机身份证明已经改动;有可能有些人在做邪恶的事;man-in-the-middle attack(中间人攻击);
报错二:
(未完待续)
参考:
http://www.cnblogs.com/keethebest/p/3184355.html
http://www.cnblogs.com/fengbeihong/p/3307575.html
http://www.cnblogs.com/bootoo/p/5068514.html
http://www.linuxidc.com/Linux/2015-03/115056.htm
http://www.cnblogs.com/kex1n/p/5220823.html