一、SSH客户端使用

  使用ssh客户端远程登陆到指定的计算机:

$ ssh {user}@{remote} -o IdentityFile=/home/id_rsa -o StrictHostKeyChecking=no
  user:远程机器上的用户名,如果不指定的话默认为当前用户;
  remote:远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名;
  port:ssh Server **的端口,SSH服务器默认端口号是 22,不指定则使用默认端口号。

  在工作中,SSH服务器的端口号很有可能不是22,如果遇到这种情况就需要使用 -p 选项,指定正确的端口号,否则无法正常连接到服务器。

1、免密码登陆

ssh无密码登陆要使用公钥和私钥。linux下可以用ssh-keygen生成公钥/私钥对。

(1)在客户端机器生成公钥/私钥对

$ ssh-keygen -t rsa -P ''

直接ssh-keygen然后三次回车就可以了。会在/home/root(用户) 下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。
       -P表示密码;-P  '':表示空密码,这种情况可以不使用-P参数。

(2)上传公钥到服务器

  把客户端机器生成的id_rsa.pub公钥复制到服务器的 /home/root(用户)/.ssh/authorized_keys文件中。

$ scp  .ssh/id_rsa.pub   hqs@192.168.2.77:/home/hqs/.ssh/id_rsa.pub
# 把复制的id_rsa.pub添加到.ssh/authorized_keys文件
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys # authorized_keys的权限要为600

(3)非对称加密算法

使用 公钥 加密的数据,需要使用 私钥 解密;
       使用 私钥 加密的数据,需要使用 公钥 解密。

2、配置别名

(1)上传公钥到服务器(ssh-copy-id)

执行 ssh-copy-id -p port user@remote

(2) 配置别名

配置别名可以让我们进一步偷懒,比如:ssh centos来替代上面这一长串命令,在客户端计算机 ~/.ssh/config 里面追加一下内容:

Host centos
HostName 服务器ip地址
User python
Port 22

保存后,可以使用ssh centos实现远程登陆,scp同样可以使用。

3、使用rsa秘钥登陆

$ ssh  {user}@remoteaddr  -o IdentityFile=/home/{user}/.ssh/id_rsa -o StrictHostKeyChecking=no

二、SCP使用

  scp 就是 secure copy,是一个 Linux 下用来进行 远程拷贝文件 的命令。既可以将本地内容拷贝到远程计算机,也可以将远程计算机内容拷贝到本地。

$ scp  用户名@ip:文件名或路径  用户名@ip:文件名或路径
-r:若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名;
-P:若远程SSH服务器的端口不是22,需要使用大写字母 -P 选项指定端口。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 # 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
$ scp -P port 01.py user@remote:Desktop/01.py # 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
$ scp -P port user@remote:Desktop/01.py 01.py # 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
$ scp -r demo user@remote:Desktop # 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
$ scp -r user@remote:Desktop demo # 指定RSA秘钥
# 下载数据
$ scp -i ~/.ssh/id_rsa -r root@remote_ip:/data/www/develop/develop_activity_task /data/www/activity_task_bak # 上传数据
$ [root@localhost fsp]# scp -i /home/id_rsa patch.zip fsp@172.28.0.2:/home/fsp/
Authorized users only. All activities may be monitored and reported.
patch.zip

  注意:

  scp 这个终端命令只能在 Linux 或者 UNIX 系统下使用;

  如果在windows系统中,可以安装putty,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输。

ssh和scp详解的更多相关文章

  1. SCP免密传输和SSH登录流程详解

    SCP免密传输和SSH登录协议详解 在linux下开发时,经常需要登录到其他的设备上,例如虚拟机内ubuntu.树莓派等等,经常涉及到传输文件的操作,传输文件有很多中方法,如物理磁盘拷贝,基于网络的s ...

  2. Linux:SSH服务配置文件详解

    SSH服务配置文件详解 SSH客户端配置文件 /etc/ssh/ssh——config 配置文件概要 Host * #选项“Host”只对能够匹配后面字串的计算机有效.“*”表示所有的计算机. For ...

  3. linux cp 和scp详解

    linux之cp/scp命令+scp命令详解   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... dire ...

  4. hadoop ssh 端口-ssh-copy-id详解

    ssh-copy-id详解 http://www.blogdaren.com/post-1815.html 服务器时常需要配置无密码的登录方式,最一般的设置方式如下: 使用ssh-keygen和ssh ...

  5. SSH框架之一详解maven搭建多模块项目

    闲来无事,思量着自己搭建一个ssh框架,一来回顾熟悉一下ssh的内容,hibernate还就没用过了,生疏了都.二来整合一下,将其他掌握的和正在学习的框架核技术糅合到一起,就当是做一个demo练手了. ...

  6. SSH端口转发详解及实例

    一.SSH端口转发简介 SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据.但是,SSH还能够将其他TCP端口的网络数据通SSH链接来转发,并且自动提供了相应的加密及解密服务.这一过程也被叫 ...

  7. SSH端口转发详解及实例-转载

    作者:珂儿吖 出处:http://www.cnblogs.com/keerya/ 目录 1.1 SSH端口转发的两大功能 实验一:实现SSH端口转发——本地转发 实验二.实现SSH端口转发——远程转发 ...

  8. linux常用命令之scp详解

    使用scp的前提: 1.服务端启动了sshd服务 2.是本地和远程两端的系统都必须要有scp这个命令.即openssh-clients软件包 [安装方法] [root@ ~]# yum install ...

  9. Linux SSH的命令详解[转]

    http://www.linuxidc.com/Linux/2008-02/11055.htm前一阵远程维护Linux服务器,使用的是SSH,传说中的secure shell. 登陆:ssh [hos ...

随机推荐

  1. TCP的成块数据流

    TCP使用滑动窗口协议的另一种方式来实现流量控制.该协议允许发送方在停止并等待确认之前可以连续发送多个分组.由于发送方不必每发送一个分组就停下来等确认,因此该协议可以加速数据的传输. 一.滑动窗口  ...

  2. np.random.normal()

    高斯分布(Gaussian Distribution)的概率密度函数(probability density function): \[ f(x)=\frac1{\sqrt{2\pi}\sigma}\ ...

  3. 封装log4j支持记录到testng

    一.初始方案 自动化中需要把日志通过testng的Reporter.log来记录日志在报告中展示.开始是新增了一个日志类: ReporterLog.class import org.slf4j.Log ...

  4. Compile Groovy/Spock with GMavenPlus

    在之前的博文里曾使用GMaven插件编译Groovy/Spock,这次使用GMavenplus插件,更加方便. 具体步骤 1. 导入Spock和Groovy依赖 <dependency> ...

  5. git 换行符替换

    https://help.github.com/en/articles/dealing-with-line-endings rm .git/index git reset https://github ...

  6. yum的repo文件详解、以及epel简介、yum源的更换

    一.什么是repo文件        repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包 ...

  7. 3dsmax2013卸载/安装失败/如何彻底卸载清除干净3dsmax2013注册表和文件的方法

    3dsmax2013提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2013失败提示3dsmax2013安装未完成,某些产品无法安装,也有时候想重新 ...

  8. DataBind()方法实现数据绑定

    在为.aspx页上的对象设置了特定数据源之后,必须将数据绑定到这些数据源上.可以使用“Page.DataBind()”或“控件.DataBind()”方法将数据绑定到数据源上. 主要差别在于:调用Pa ...

  9. React创建组件的三种方式比较

    推荐文章: https://www.cnblogs.com/wonyun/p/5930333.html 创建组件的方式主要有: 1.function 方式 2.class App extends Re ...

  10. PyCharm鼠标右键不显示Run unittest方法

    PyCharm鼠标右键不显示Run unittest方法 PyCharm是一个用来写python代码的IDE,很好用.在其中建立了unittest类后,鼠标点击某个test方法后,菜单中会显示Run ...