Scp是基于ssh协议在网络之间进行安全传输(文件传输)的命令。
格式:
①传输文件到远端:
Scp [参数] 本地文件路径+ 远程用户@远程ip地址:远程目录
本地文件路径:要传输的文件的正确位置(pwd查看位置信息)(要写绝对路径)
远程用户@远程ip地址:这里可以选择传输到指定的用户上,也可以不指定。直接不写;只写远端主机ip地址
:后面加传输到的地址
远程目录:传输文件的接收地址(前面如果没有指定传输的用户身份,也不用担心在用一个ip地址的所有用户都收到传输的内容)
例如:scp /home/zhangjie/zz 192.168.10.131:/home/
scp -r /home/zhangjie/Pictures/ root@192.168.10.131:/【传输文件夹,指定接收的用户身份】
②在本地下载远端主机:
Scp [参数] 远端用户身份@远端主机ip地址:远端文件路径 +本机文件路径远端用户身份@远端主机ip地址:远端用户身份和前面一样,可以不用指定。远端IP地址为为相应主机地址
远端文件路径:要下载的文件在远端主机的绝对路径(远端主机上‘要下载的文件’所在的位置)
本机文件路径:下载的文件存放在本机的位置【这里存放信息的地址,可以现建,也可以提前建立】
例如:
scp -r root@192.168.10.131:/zz /home/zhangjie/
scp -r 192.168.10.131:/Pictures /home/zhangjie/
参数:
-v: 显示详细的连接进度
-P:指定远程主机的sshd端口号(当远程主机sshd端口号被改[默认22]或者远程主机有特殊要求,才需用-P)
-r:用于传送文件夹
实验:
传输普通文件,不指定用户【不指定用户,直接写远端主机IP地址,那要传输过去或者下载到本机,远端主机当前是什么用户身份,在本端也是同样的身份(体现在:传输或下载都要输入远端用户的密码)】
例如下面,传输时,输入的远端主机密码,就是当前远端主机身份的登录密码,和在本端显示的远端主机身份是一样的。
传输文件夹,指定接收用户
下载远端主机里一个文件夹/zhan,到本地root家目录/root
注:
如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2. 使用scp要注意所使用的用户是否具有可读取,执行(r,x)远程服务器相应文件的权限。
3. 由于scp是基于ssh协议的,查看sshd是否禁止了用户以密码登录,ssh端口号是否被改
Scp报错:‘permission denied’解决办法
例:在普通用户下去下载root用户里面的文件
【无法下载】经检查发现/etc/ssh/sshd_config里面不允许以密码登录(将no改为yes后,下载成功) 不允许密码验证允许密码验证
重启sshd服务,让其生效systemctl restart sshd.service
重新下载
Scp下载
注:下载远端设备上的目录文件public_html,但是我不想要这个名字,所有在本地生成一个内容和public_html一样,但名称不一样的pu目录文件(即重命名操作)。
注:
现在许多服务器为了安全,都会改 ssh默认的22端口,改成一个特殊的端口。所以。在scp或者sftp时,就要指定通过什么端口来迁移。现在,特记下这个特殊端口来scp的命令。
当Scp端口号不是22时:
scp -P port user@serverip:/home/user/filename /home/user/filename以上端口大写P 为参数,port 端口 user 为ssh user serverip 为远程服务器ip或者域名 ,/home/user/filename 为远程服务器的文件名 /home/user/filename 为本地服务服务器的文件名。该命令的作用就是将远程的filename复制到本地对应的目录下面。
sftp远程传输命令
操作远程服务器
ls 显示远端主机的列表
cd 切换远程的工作目录
pwd 显示远程的工作目录
操作本地服务器【如果要对本地操作,只需在上述的指令上加‘l’变为:lls,lcd, lpwd等】
lls 显示本地主机的列表
lcd 切换本地的工作目录 sftp> lcd /home/zhangjie/ 后面加具体要切换的路径
lpwd 查看本地目录信息
上传下载文件参数
get --- 表示从远程服务器下载数据(单个文件)
mget --- 表示下载多个文件
put --- 表示从本地服务器上传数据(单个文件)
mput --- 表示上传多个文件在sftp的环境下的操作就和一般ftp的操作类似了,ls,rm,mkdir,dir,pwd,等指令都是对远端进行操作,
[root@localhost /]# sftp -oPort=22 192.168.10.3 登录之后 就在别的设备上面了,192.168.10.3是非本地地址。
Get下载【单个文件】
sftp> get /home/zhangjie/anaconda-ks.cfg远端主机 /home/ 下载到本地10.2的/home目录下本地主机
Fetching /home/zhangjie/anaconda-ks.cfg to /home/anaconda-ks.cfg/home/zhangjie/anaconda-ks.cfg 100% 1225 1.2KB/s 00:00
结果:
[root@localhost home]# ls
zhangjie 下载之前
[root@localhost home]# ls
anaconda-ks.cfg zhangjie 下载之后
Put 上传【单个文件】
sftp> put /home/anaconda-ks.cfg 【要上传内容的绝对路径地址--在你本地主机上】
/home/zhangjie/【要上传到的目的地址的远端主机]】
Uploading /home/anaconda-ks.cfg to /home/zhangjie/anaconda-ks.cfg
/home/anaconda-ks.cfg 100% 1225 1.2KB/s 00:00
sftp>
结果
ssh(客户端)配置
ssh客户端建立密钥文件
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #密钥文件默认保存位置{或者手动设置保存位置}
Created directory '/root/.ssh'.
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:
49:d8:78:cb:36:a0:96:9d:2c:f0:cc:b1:7e:45:8e:33 root@localhost.localdomain
The key's randomart image is:+--[ RSA 2048]----+
| |
| + |
| . . + = |
| = B X o |
| X E S |
| o . = . |
| . . |
| . |
| |
+-----------------+
查看SSH客户端密钥文件和要发送到SSH服务器的公钥文件
[root@localhost ~]# cat ~/.ssh/id_rsa #或者cat /root/.ssh/id_rsa 客户端密钥文件
-----BEGIN RSA PRIVATE KEY-----MIIEpQIBAAKCAQEA9sBX/xIdNvvNKG3ZnQ3+3j6aGXCiFEwH1Ky27hr20GeyhVVvYrvbuBMmNpTTr1XQdH/4fkA6UOK/XX9Zm8MzWWfuyqHfFzWyxEFi/UzmZMDwVPlfEhqdTtyWBdjOWz1stiRHEdRbb7YQ+oarq340ogsLFznoW3hLlWIp56xvI6uG8OAyybu8A29j8Z8A/lv2ZdXeg5Wr0F0xFYB3R7g3+xSb2QpelevHr5EpZsdBhM0iB1xZ+OW3fmvMO4eEfdN2hrB09u6nyLFTuGYATPfEGifOKMpl+qeurIrN66b58UnpKtbbbFhdAcSplgdSruiN7krK/kKHGcCBGTaDMkDx+QIDAQABAoIBACaN5zHzopz0uxmWEGp5xVj0bx+KeciyGIcidXK+w9HMYhhzQPQsZihc1ZuxpWHABtItLKaNYo9A3qW9QEMWPO+7TZRbtn/p5ATGMrFhUp5rhyG/1Rr/DZVE4iwHtDaNYm8TPAeNJrxNtllusWQaVB79mr4GTkf8g9LTg7ivOK5Z0DDkKl4M79gJYmym7/Q4/IFYdBsqtHvjLvhniEyo/VJPs56JdYlsDL8gpUsLZaqSw1Z8bbgEH5N0rmeLLQjP6h30o38S+3umF2iqK198RvHlUnynThzK+c8acWxDF7PY5yjU8EokBUc1l+EbYOP5dCUSFXzhJyd0TQ03u0Z9gAECgYEA/KrDCMoR6FdZB2BcBFBVJja0OOe1gezdkGxZO65ONfpKaA796Rk5+EuBF/J46QXzG4ewK95hj/4svcIWQqtwGtP0qCQIrPwU/ildaD1HrA0QM0zyt9AWNsdeaM2rLhr+6dxKzPl3R77ZKIf/etZ+xHQy7WO50tn6wx5X3cjP4CUCgYEA+gGa4fF7FFkOgAQ6RZnNmFNoT4S0koYbWyvKakthwh7dQQiFjp10dLYgwfZJ7YvXRxFHRmR4XU+9aPgAvh9Dr1n29rsi6m74qGPLSwUYu7JisgJlz6nw5z5EYb/e5anguN0LbAV4spSl7UmMl9yN++nwAG33zaJJOr3zO9s46EUCgYEApv9mcQS92UcCPPHfX6qI3P0DGSlsujcIKlCymdOXNe38B9MA13Qo8IdXB7DnYXzhNaz1L8mHylhA0hraA660Jcc5yXgnk835QhOs/Ryjpn/r2TxeoEcUp5gWOkbVgV+uZHuJpPitceoeNb/NiC8FEmuKzYRAabBRIW2IvbngS1ECgYEApb0gp79GICQ2F6o102R2RxCsa2MHrseXJSbvxu34fg+mEHIM0JIT3TfMmamkMwXtDuEmhkUfAoVVhVw8ac4iOgKDVeiT6iTtVfzqje5wCiblhStPwY7g9PxzqvXfWBP5tbRc2jUS55jiM1/6A8cknafmAvLkP//hWj8JHFpl7J0CgYEAsx2PheiCZuZMJ6wJOKyi1WPemX0Zj69qnbZOBF0VktnNLzEuTGU1AV0rhov/KFwTAJq5LS+2RzmVuyJJLep66ZQdlaQawNyLfYb5+CR/klnbEJQ7bYBr29kbygpi+xdH0LlZtEZC86fDFYVns2lrUDSszz9Xn9AKKR1+d52VGVc=
-----END RSA PRIVATE KEY-----
[root@localhost ~]# cat ~/.ssh/id_rsa.pub #客户端发送到服务器的公钥文件
#cat ~/.ssh/authorized_keys是服务器保存客户端发来的公钥位置。ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD2wFf/Eh02+80obdmdDf7ePpoZcKIUTAfUrLbuGvbQZ7KFVW9iu9u4EyY2lNOvVdB0f/h+QDpQ4r9df1mbwzNZZ+7Kod8XNbLEQWL9TOZkwPBU+V8SGp1O3JYF2M5bPWy2JEcR1FtvthD6hqurfjSiCwsXOehbeEuVYinnrG8jq4bw4DLJu7wDb2PxnwD+W/Zl1d6DlavQXTEVgHdHuDf7FJvZCl6V68evkSlmx0GEzSIHXFn45bd+a8w7h4R903aGsHT27qfIsVO4ZgBM98QaJ84oymX6p66sis3rpvnxSekq1ttsWF0BxKmWB1Ku6I3uSsr+QocZwIEZNoMyQPH5 root@localhost.localdomain
向服务器发送客户端的公钥
[root@localhost ~]# ssh-copy-id 192.168.10.2
The authenticity of host '192.168.10.2 (192.168.10.2)' can't be established.ECDSA key fingerprint is 0c:e1:e9:c0:6c:b3:42:b8:ae:de:92:b8:49:a1:c8:7d.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.2's password: #远端服务器登录密码
Number of key(s) added: 1Now try logging into the machine, with: "ssh '192.168.10.2'"and check to make sure that only the key(s) you wanted were added.
接下来就可以对ssh进行优化操作{sshd_config}
配置服务时的几个注意事项:
1,Linux里面一切都是文件
2,配置服务就是在修改服务的配置文件
3,服务配置完要重启服务{restart}
4,要把配置好的服务加入开机自启
作者:大白兔爱吃烤肉
https://www.bilibili.com/read/cv7572886
出处:bilibili