一、ssh
1、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服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。
2、安装ssh
安装ssh服务器:
sudo apt-get install openssh-server
![](https://i-blog.csdnimg.cn/blog_migrate/3dd7913bc009667773b2505d1667d786.png)
3、使用ssh连接服务器,实现远程登录
远程登陆命令:
ssh 服务器用户名@IP
使用ssh访问,如访问出现错误,可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决。
(1)、连接步骤1:查看ssh服务器地址和用户名
先在服务器端运行 ifconfig 命令,获取服务器ip地址,具体如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6db5b419ed51c895908fbe9071f3581b.png)
(2)、连接步骤2:客户端发起链接
![](https://i-blog.csdnimg.cn/blog_migrate/03a5d8279c13b93fe9ac76185bbefb6b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8319921781416bb9c064ca1c44711ad5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aaa8fc458a97c652877e28608d5d39d9.png)
注意:
客户端初次链接服务器时的提示从客户端初次连接到服务器时可能会出现上图中的提示,其含义是:SSH 告知用户,这个主机不能识别,这时键入"yes",SSH 就会将相关信息,写入" ~/.ssh/know_hosts" 中,再次访问,就不会有这些信息了。然后输入完口令,就可以登录到主机了。
二、scp
远程拷贝文件 scp -r
的常用方法:
1、scp的使用前提
使用该命令的前提是:目标主机已经成功安装openssh-server
如没有安装使用 sudo apt-get install openssh-server
来安装
2、标准使用格式:
服务器端文件复制到客户端的标准格式如下
scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对/相对路径
举例:scp -r cnpneg@172.16.71.129:/home/cnpeng/003 /Users/CnPeng
上述代码含义是:将服务端/home/cnpeng/目录中的003拷贝到客户端机器的 /Users/CnPeng 目录下,服务端的用户名是cnpeng,服务端的地址是172.16.71.129。具体如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/b2e7bce0900ea495e345cc4dd96e95bd.png)
注意:
- 在客户端初次运行上述命令时,可能会提示输入“yes”确认拷贝,此时必须输 “yes” 而不能简单输入“Y”
- 拷贝单个文件可以不加 -r 参数,拷贝目录必须要加。
- 在客户端拷贝的时候,一定要切换到客户端本机的用户后才能进行拷贝操作!
我在这儿吃了老大亏了,一开始从客户端链接到服务端之后,客户端会默认切换到服务端账户下(上面链接步骤2的图中有展示),然后我就直接运行了这个拷贝命令,然后就一直报错,一直提示/Users/CnPeng 不是一个目录或文件。最后我才反应过来,应该需要切换到客户端本机的用户后再运行该命令,然后就一切ok了
3、格式演化
在使用各拷贝命令时,
服务器用户名@服务器IP地址
最好写全!!
(1)、远程目录复制到本地:
scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName
scp -r RemoteHostIp:RemoteFolder FolderName
![](https://i-blog.csdnimg.cn/blog_migrate/166395fff3abb761a08139b826472b32.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c836af45a7e930cddd06a3e955086781.png)
(2)、远程文件复制到本地:
scp RemoteUserName@RemoteHostIp:RemoteFile FileName
scp RemoteHostIp:RemoteFolder FileName
scp RemoteHostIp:RemoteFile FileName
![](https://i-blog.csdnimg.cn/blog_migrate/90719e02e615227676fc851b7d824432.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2e6ce5b0df489114f48717696b6d7624.png)
(3)、本地目录复制到远程:
scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder
scp -r FolderName RemoteHostIp:RemoteFolder
![](https://i-blog.csdnimg.cn/blog_migrate/a15f545a5d5070428f35fc9a642e14da.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9498452dc5051f340f412e2e2392010.png)
(4)、本地文件复制到远程:
scp LocalFileName RemoteUserName@RemoteHostIp:RemoteFile
scp LocalFileName RemoteHostIp:RemoteFolder
scp LocalFileName RemoteHostIp:RemoteFile
![](https://i-blog.csdnimg.cn/blog_migrate/ad0fb4ab4b92aaca6e1d4be5565e990c.png)
拷贝远程的文件到本地当前目录:
![](https://i-blog.csdnimg.cn/blog_migrate/7be8611828b7a1a5a82453860ff68041.png)
其他示例代码:
拷贝远程的文件可以任意修改其名字:
![](https://i-blog.csdnimg.cn/blog_migrate/136fbd2ef7925c9cc851c184bb20f86d.png)
拷贝远程的文件可以指定存放路径:
![](https://i-blog.csdnimg.cn/blog_migrate/3778aa647a40718561f58519dc7658ee.png)
三、思考
使用Vmware或者VmFusion搭建了虚拟机之后,如果需要在虚拟机和宿主机之间实现文件的共享,那么就有两种方案可以选择了:
- 1、安装 VmTools,使用VmTools 实现文件共享
- 2、搭建SSH服务器,然后利用 scp命令实现两端的文件传输和共享
上面的这种思路目前在 MAC + VmFusion 中实现了,VmFusion中安装的是ubuntu ,文中的截图也是基于这种方案。
在Windows + Wmware 的环境下这种思路是否能 实现,后期再尝试