用ssh快速完成文件上传:ssh拷贝文件到服务器 (ssh 拷贝文件到服务器)

使用SSH快速完成文件上传:SSH拷贝文件到服务器

在日常工作中,我们经常需要上传文件到服务器,这可能因为需要在服务器上进行某些操作,也可能是为了在网站上展示一些新的内容。而对于这样的任务,SSH(Secure Shell)可以帮助我们在安全、高效的情况下完成文件上传。本文将介绍如何使用SSH快速地将文件从本地拷贝到服务器上。

1. 获取SSH访问权限

在使用SSH之前,我们需要确认自己拥有SSH的访问权限。如果你从未使用过SSH,你需要向你的服务器提供商或管理员申请SSH访问权限。如果你已经拥有访问权限,可以跳过这一步。

2. 打开终端

SSH的操作需要在命令行终端下进行,因此我们需要打开终端。不同操作系统下打开终端的方式可能不同,以下是几个常见的操作系统下打开终端的方式:

– Windows:按下Win+R组合键打开“运行”窗口,输入cmd并按下“确定”键即可打开命令行终端。

– macOS:点击Dock栏上的“启动台”图标,在搜索框中输入“终端”,点击打开即可。

– Linux:通常可以通过在桌面上或者系统菜单中找到“终端”或“命令终端”并打开。

3. 建立SSH连接

在终端中输入以下命令,建立与远程服务器的SSH连接:

“`

ssh username@remote_host

“`

其中,username是你在服务器上的用户名;remote_host是远程服务器的IP地址或域名。示例命令:

“`

ssh john@192.168.1.100

“`

输入命令后,终端会提示你输入登录密码。输入密码后,即可连接到远程服务器。

4. 创建本地文件夹

在将文件从本地上传到服务器之前,我们需要在本地创建一个文件夹用于存放要上传的文件。假设我们要将一个名为“example.txt”的文件上传到服务器上的“/home/john/files”目录下,我们需要在本地创建一个名为“upload”的文件夹,用于存放要上传的文件。

在终端中输入以下命令,在当前用户的主目录下创建一个名为“upload”的文件夹:

“`

mkdir ~/upload

“`

5. 拷贝文件到本地

将要上传的文件拷贝到刚才创建的本地文件夹中。在终端中输入以下命令,将文件拷贝到“upload”文件夹中:

“`

cp /path/to/example.txt ~/upload

“`

其中,/path/to/example.txt是要拷贝的文件的完整路径。示例命令:

“`

cp /Users/john/Desktop/example.txt ~/upload

“`

6. 拷贝文件到服务器

在终端中输入以下命令,将刚才在本地创建的文件夹中的文件拷贝到远程服务器上的目标文件夹中:

“`

scp ~/upload/example.txt username@remote_host:/path/to/files/

“`

其中,~/upload/example.txt是要拷贝的文件的本地路径;username是你在服务器上的用户名;remote_host是远程服务器的IP地址或域名;/path/to/files/是上传到服务器上的目标文件夹路径。示例命令:

“`

scp ~/upload/example.txt john@192.168.1.100:/home/john/files/

“`

输入命令后,终端会提示你输入登录密码。输入密码后,即可将文件从本地拷贝到服务器上。

7. 关闭SSH连接

上传完成后,我们需要关闭SSH连接以保证服务器的安全。在终端中输入以下命令,断开与远程服务器的SSH连接:

“`

exit

“`

8. 结束

至此,使用SSH完成文件上传的方法已经介绍完毕。值得注意的是,本文介绍的方法只是使用SSH上传文件的其中一种方式,实际上还有很多其他的方法可以完成这个任务。无论使用哪种方法,我们都应该在上传文件前认真检查文件内容,确保不会上传错误的文件,从而避免不必要的麻烦。

相关问题拓展阅读:

ssh免密码登陆及其原理

ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面以CentOS为例。有机器A(192.168.64.21),B(192.168.64.22)。

目标:A通过ssh免密码登录到B

特意强调,使用参数可以省去生成公钥/私钥的回车步骤昌纯

备注:

之一次登录需输入yes,现在A机可以无密码登录B机了,B登陆A,也同样,在B中生成公钥和私钥对,将公钥写入authorized_keys中,然后同步A、B中的authorized_keys,使其一致就ok了。

也即就是:登录的机子有私钥,被登录的机子要有登录机子的公钥,这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法(不对称加密算法)的公钥/私钥对,当然也可以用dsa(对称加密算法:对应的文件是id_dsa,id_dsa.pub)

SSH是为建立在应用层和传输层基础上的安全协议( OSI七层与TCP/IP五层网络架构详解 )。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管世迅知理过程中的信息泄露问题。

从客户端来看,SSH提供两种级别的安全验证:

只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。以下是登录验证流程:

​ 当之一次链接远程主机时,会提示你当前主机的”公钥指纹”,询问你是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中。

这种验证的前提是客户端需要生成一对密钥,将公钥放到需访问的远程服务器。这种验证比上一种的好处是,不能仿冒真正的服务器,因为要仿冒必须拿到客户端生成的公钥。缺点就是验证等待过程稍长些。

1、在客户端打开终端,执行 ssh-keygen ,该命令会默认在 ~/.ssh/ 目录下创建 id_rsa 、 id_rsa.pub 两个文件,分别为你的公钥和私钥

2、将公钥 id_rsa.pub 文件拷贝到服务器端的 ~/.ssh/authorized_keys 文件中,可通过scp拷贝

A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加搜消密验证。非对称加密,公钥加密的密文不能公钥解开,只能私钥解开

ssh-agent

ssh-agent是密钥管理器,是一种控制用来保存公钥身份验证所使用的私钥的程序

运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程

ssh-agent是管理多个ssh key的代理,受管理的私钥通过ssh-add来添加

好处1:不用重复输入密码

用 ssh-add 添加私钥时,如果私钥有密码的话,照例会被要求输入一次密码,在这之后ssh-agent可直接使用该私钥,无需再次密码认证。

好处2:不用到处部署私钥

假设私钥分别可以登录同一内网的主机 A 和主机 B,出于一些原因,不能直接登录 B。可以通过在 A 上部署私钥或者设置 Forwarding(转发) 登录 B,也可以转发认证代理连接在 A 上面使用ssh-agent私钥登录 B;可以在A上直接sftp传文件到B上。

如这边有一台机器是local,能通过公钥直接登陆server1和server2。server1和server2之间无公钥登陆。

现在要在server1上直接登陆server2,在local上执行

执行了之后就将私钥给ssh-agent保管了,server1上面登陆server2的时候,需要私钥验证的时候直接找ssh-agent要就可以了

接下来登陆server1,注意-A

可以发现server1上多了/tmp/ssh-/agent.xx的socket,之后神奇的事发生了,在 server1上可直接进server2,只需执行如下命令,如果加了-A则可以继续ssh forwarding(转发) ,以至无限的机器forwarding。

ssh (-A) server2

同样的原理可以试一下sftp, scp等基于ssh的命令。

如运行ssh-add,遇到 Could not open a connection to your authentication agent.。

解决:

需要ssh-agent启动bash,或者说把bash挂到ssh-agent下面。

如何将一般用户ssh登陆到服务器限制到用户的家目录

1.创建用户abc ,主目录为/home/abc

2.用root用户建立目录 /var/chroot , /var/chroot/lib, /var/chroot/bin,/var/chroot/etc,/var/chroot/home/abc

3. 把/lib 下 libc.so.6,ld-linux.so.2,libdl.so.2,libtermcap.so.2(为ldd /bin/bash的结果) 拷贝到 /var/chroot/lib下

4.把bash文件拷贝到/var/chroot/bin下.

5.chown abc /var/chroot/home/abc

6. tail -1 /etc/passwd >;/var/chroot/etc/passwd

7. 修改/etc/pam.d/sshd 在末尾加上一句

session required pam_chroot.so

8.修改/etc/security/chroot.conf

增加 一行 abc/var/chroot 保存.

9.使用abc 通过ssh 登录即可

如何使用ssh登陆windows服务器

启动linux并登入到系统:

下面来检查一下默认安装的系统是否安装了ssh服务:

从上图看到ssh服务已经安装并正常运行,首先要备份配置文件,任何时候我们需要修改配置文件的时候都建议先把原始文件备份:

下面我们就来修改sshd_config配置文件,需没旦要修改两个地方,首先们需要开放ssh用到的22端口,把下图中前面的#号去掉即可:

第二个需要修改的地方是permitrootlogin

yes这个是否允许超级管理员远程登录,(另外还有passwordauthentication

yes暂时不知道是否有依赖)

同样的我们把前面的#号去掉即可:

保存退出,并且重启ssh服务:

service

ssh

restart

现在我们使用ssh工具来连接一下刚才我们配置好的linux服务器,ssh连接工具有很多,这里枯芹扰使用putty来测试连接,运行软件,并输入服务器的ip地址,点击下方向的“open”连接到首唤服务器:

跳出一个警告窗口,大致是说服务器没有注册密钥之类的,是否信任服务器,我们点击“是”就可以成功的连接到刚配置好的linux服务器了:

1. ssh简介以及本例的应用场景

①ssh的简介

SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的握枝行权益,推广SSH是必要的。 SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样”中间人”这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

②本例的应用场景

用户在client(Linux)上通过ssh远程执行server(Windows)上的命令,比如c:\test.bat

注:Linux版自带ssh Server且默认启动,具体设置方法请参见google。

2. ssh服务器的安装(Windows)

ssh服务器软件有许多中,我们这里使用的是免费的freeSSHd。

①首先从官方站点下载软件并安装(

②安装完成后进入配置界面(Server Status),确认SSH server正在运行状态

③进入Users界面,设定一个访问的用户账户(比如xut)

这里我们建立一个叫xut的用户,认证有3种方式可以选择。从以后通过ssh运行命令的方便(无需输入密码)考虑,我们选择Public key认证方式。选择Password方式的话,每次访问需要输入密码,此种方式较为繁琐而且安全性不高。然后开放其Shell权限。

④进入认证界面,确认Public key认证方式属于激活状态(选择Allowed或Required)

此时ssh服务器端的基本设置已经OK,可进一步进行更加详细的设置(比如访问限定等),此处不再介绍。

注意:服务段哗器端如果有防护墙时应该开发TCP 22号端口最为ssh连接使用。

3. ssh客户端的设置(Linux)

由于我们的客户端采用的是Linux,所以不用安装客户端软件,系统自带的就有。

我们需要在Linux上创建一个共有和私有的密钥对,私有密钥放到客户端(Linux)上,共有密钥放到服务器端(Windows)上。在Linux上通过ssh-keygen命令来创建。

# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53

其中,/root/.ssh/id_rsa为私有密钥,/root/.ssh/id_rsa.pub为共有的密钥。

此时,需要把共有密钥放到服务器端(Windows)进行保存,以便于服务器端进行安全检查。

我们通过认证界面找到存放共有密钥的地址(Public key folder)。

如上图所示,然后在c:\Program Files\freeSSHd目录下创建以登录用户名为名搭凳字的文本文件,此处举例为xut文件。并将/root/.ssh/id_rsa.pub文件中的内容拷贝到c:\Program Files\freeSSHd\xut文件中。

至此,客户端和服务器端的密钥设置已经完成,可以通过如下命令进行远程的命令执行。

ssh “c:\test.bat”

这条命令将执行服务器端的C盘下的test.bat文件,并把结果返回,整个操作不需输入密码。

4. ssh客户端的设置(Windows)

由于Windows不附带ssh的客户端和服务器端,我们这里找一个免费的客户端软件PuTTY。

PuttY主页:

各种客户端的比较:

在Putty主页,我们下载putty.zip(含除了PuTTYtel以外的所有文件),然后解压会发现一个叫plink.exe的文件,这就是我们的ssh客户端命令行软件。

我们首先要成一个共有和私有的密钥对,使用putty.zip中附带的PUTTYGEN.exe生成。

启动PUTTYGEN.exe后可以见到下图界面,点击即可生成所需密钥对。

注意:由于是采用随机算法生成,需要不停地在对话框上移动鼠标进度条才会增加,否则将保持不变。

鼠标在这里不停移动

密钥生成完毕后,可以把私有密钥进行保存,为了登录简单起见不对私钥进行加密,提示没有passphrase选择忽略即可。假设我们这里把私钥保存为pri_key.ppk。

我们把公钥放在freeSSHd端(ssh服务器端)进行保存,具体保存方法参见【ssh客户端的设置(Linux)】。

在Windows客户端,执行如下命令进行ssh连接,并不需要输入密码即可通过密钥进行自动认证。

plink -i pri_key.ppk c:\test.bat

(此时将执行服务器端的c:\test.bat脚本。)

关于ssh 拷贝文件到服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 用ssh快速完成文件上传:ssh拷贝文件到服务器 (ssh 拷贝文件到服务器)