Linux:13、Linux常用服务器构建-ssh和scp
一、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服务器:
image.pngsudo apt-get install openssh-server
3、使用ssh连接服务器,实现远程登录
远程登陆命令:
ssh 服务器用户名@IP
使用ssh访问,如访问出现错误,可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决。
(1)、连接步骤1:查看ssh服务器地址和用户名
先在服务器端运行 ifconfig 命令,获取服务器ip地址,具体如下:
查看ssh服务器地址和用户名(2)、连接步骤2:客户端发起链接
客户端链接命令 链接成功 在客户端查看服务端内容注意:
客户端初次链接服务器时的提示
从客户端初次连接到服务器时可能会出现上图中的提示,其含义是: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。具体如下图:
注意:
- 在客户端初次运行上述命令时,可能会提示输入“yes”确认拷贝,此时必须输 “yes” 而不能简单输入“Y”
- 拷贝单个文件可以不加 -r 参数,拷贝目录必须要加。
- 在客户端拷贝的时候,一定要切换到客户端本机的用户后才能进行拷贝操作!
我在这儿吃了老大亏了,一开始从客户端链接到服务端之后,客户端会默认切换到服务端账户下(上面链接步骤2的图中有展示),然后我就直接运行了这个拷贝命令,然后就一直报错,一直提示/Users/CnPeng 不是一个目录或文件。最后我才反应过来,应该需要切换到客户端本机的用户后再运行该命令,然后就一切ok了
3、格式演化
在使用各拷贝命令时,
服务器用户名@服务器IP地址
最好写全!!
(1)、远程目录复制到本地:
image.png image.png
scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName
scp -r RemoteHostIp:RemoteFolder FolderName
(2)、远程文件复制到本地:
拷贝服务端文件到本地当前目录并指定在本地的名称 拷贝服务端文件到本地2
scp RemoteUserName@RemoteHostIp:RemoteFile FileName
scp RemoteHostIp:RemoteFolder FileName
scp RemoteHostIp:RemoteFile FileName
(3)、本地目录复制到远程:
image.png image.png
scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder
scp -r FolderName RemoteHostIp:RemoteFolder
(4)、本地文件复制到远程:
image.png
scp LocalFileName RemoteUserName@RemoteHostIp:RemoteFile
scp LocalFileName RemoteHostIp:RemoteFolder
scp LocalFileName RemoteHostIp:RemoteFile
拷贝远程的文件到本地当前目录:
拷贝远程的文件到本地当前目录其他示例代码:
拷贝远程的文件可以任意修改其名字:
拷贝远程的文件可以指定存放路径:
拷贝远程的文件可以指定存放路径三、思考
使用Vmware或者VmFusion搭建了虚拟机之后,如果需要在虚拟机和宿主机之间实现文件的共享,那么就有两种方案可以选择了:
- 1、安装 VmTools,使用VmTools 实现文件共享
- 2、搭建SSH服务器,然后利用 scp命令实现两端的文件传输和共享
上面的这种思路目前在 MAC + VmFusion 中实现了,VmFusion中安装的是ubuntu ,文中的截图也是基于这种方案。
在Windows + Wmware 的环境下这种思路是否能 实现,后期再尝试