- SSH简介
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。
利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 最初是 UNIX 系统上的一个程序,后来又迅速扩展到其他操作平台。SSH 在正确使用时可弥补网络中的漏洞。SSH 客户端适用于多种平台。几乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。
有关SSH协议的部分可以参考以下博客
http://blog.csdn.net/macrossdzh/article/details/5691924
SSH安装
查看SSH版本信息
在Ubuntu 14.04 LTS上默认安装了SSH客户端
可以使用命令
dpkg -l | grep ssh-client
查看相关客户端信息
使用
ssh -V
可以查看ssh的版本
安装SSH服务器
sudo apt-get install openssh-server
安装完成后会默认开启SSH服务
重启服务
sudo service ssh restart
测试使用
ssh -l username hostip
*username:被远程登陆的用户名
*hostip:被远程的登陆的IP
登陆远程主机
ssh username@hostip
- 简化命令的技巧
方法一
配置SSH
在~/.ssh目录下创建文件config
touch ~/.ssh/config
在config文件中编写
Host *test
HostName 192.168.1.102
User doggy
*将test部分替换成自己的内容即可
配置完成后使用命令
ssh test
就可以实现登陆192.168.1.102上的用户doggy了
此处的test可以换成任意名字
方法二
将hostip添加到/etc/hosts中,使用如下格式
hostip name
name:给ip取的别名
此时可以使用命令
ssh doggy@vb
登陆到远程主机
doggy:我的远程主机用户名
但是依然很麻烦,接着简化
在~/bin中创建一根文件doggy_ssh(名字自取),并添加如下内容
ssh username@hostip
保存退出,添加可执行权限
sudo chmode +x doggy_ssh
现在就可以在终端直接使用 doggy_ssh 登陆远程主机了(这下好多了)
问题来了,每次在使用ssh登陆是总要输入密码,使用以下方法可以避免
生成SSH密钥
ssh-keygen
然后一路回车,使用SSH的默认值,此时会在~/.ssh中生成一个公钥,以及一个私钥,这个公钥就是我们需要的
在SSH的服务器端的~/.ssh目录下创建文件authorized_keys,然后将刚刚生成的公钥添加到该文件中
此时就可以实现不用输入密码登陆远程主机
向SSH服务器添加公钥的另一种方法,使用命令
ssh-copy-id -i ~/.ssh/id_rsa.pub hostip
使用scp实现文件和目录拷贝,实际上scp使用与cp的使用是一样的,只是在使用scp时,要添加远程主机的ip,以下是详解
SSH 提供了一些命令和 shell 用来登录远程服务器。在默认情况下,不允许用户拷贝文件,但还是提供了一个“ scp ”命令,使用方法如下:
本地文件复制到远程:
scp FileName RemoteUserName@RemoteHostIp:RemoteFile
scp FileName RemoteHostIp:RemoteFolder
scp FileName RemoteHostIp:RemoteFile
本地目录复制到远程:
scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder
scp -r FolderName RemoteHostIp:RemoteFolder
远程文件复制到本地:
scp RemoteUserName@RemoteHostIp:RemoteFile FileName
scp RemoteHostIp:RemoteFolder FileName
scp RemoteHostIp:RemoteFile FileName
远程目录复制到本地:
scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName
scp -r RemoteHostIp:RemoteFolder FolderName
这里只测试一个命令,其它操作都是大同小异。
远程文件复制到本地:
scp RemoteUserName@RemoteHostIp:RemoteFile FileName
RemoteUserName:远程用户名
RemoteHostIp:远程ip
RemoteFile:远程文件,可带上路径
FileName:拷贝到本地后的名字,可带上路径,不带路径拷贝到当前目录
今天在使用scp拷贝文件是发现一个很简便的方法,当然也不是新奇的方法,只是结合使用了简化命令技巧中的方法一而已
前提:按照方法一配置好相关的config文件
例如:我要将计算机Doggy上 /home/doggy/test 文件拷贝到计算机 bao 上的/home/bao/Downloads中
可以使用命令
scp /home/doggy/test bao:/home/bao/Downloads
Ps:本文内容参考的有关博客:
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录
Linux下SSH安装配置使用详解:
http://www.linuxidc.com/Linux/2015-03/115056.htm
如果在使用是遇到困难,可以参考happypeter的有关视频
视频不长,但是个人认为讲的还是很清晰的