本文所用系统为 Ubuntu 18.04
 
什么是SSH?
    简单说,SSH是一种网络协议,用于计算机之间的加密登录。全名为:安全外壳协议。为Secure Shell的缩写。SSH为建立在应用层和传输层基础上的安全协议。
 
    如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
 
    最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
 
    需要指出的是,SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。
 
OpenSSH的安装
检查SSH是否安装:
ssh localhost
通过APT的安装命令非常方便 : 
sudo apt install openssh-server

OpenSSH配置文件

如果安装成功以后,有关的配置文件都在/etc/ssh/sshd_config:
sudo gedit /etc/ssh/sshd_config
 
 
OpenSSH常用配置文件有两个/etc/ssh/ssh_config 和 /etc/ssh/sshd_config
ssh_config 为客户端配置文件
sshd_config 为服务端配置文件

通过命令对其进行编辑,在配置文件中,那些被注释掉的就是默认配置值。
解除注释(#),修改默认值,(比如Port 改为12345)
 
配置完成以后,通过以下命令生效
service ssh restart

注:
service ssh start // 开启SSH服务
service ssh stop // 停止SSH服务
service ssh restart // 重启SSH服务
可以通过以下命令查看SSH的运行结果
ps -e|grep ssh
SSH命令
常用命令
ssh [-l login_name] [-p port] [user@]hostname
 
远程但不登入,直接执行命令
方法1:ssh  [远程主机用户名]@[远程服务器主机名或IP地址] [命令]
方法2:ssh -l [远程主机用户名] [远程服务器主机名或IP地址] [命令]
 
远程登录到配置有OpenSSH的主机
由于本Ubuntu是设置在Windows虚拟机上,网络通过桥接。那么相当于,在本局域网内有2个主机:Windows 、 Ubuntu
 
由于已经搭建了Ubuntu的SSH服务端,那么我们可以在Windows端登录到Ubuntu查看效果。
 
Windows上用的工具比较多,常见的有:SecureCRT、Putty
如果指定的端口和IP没有错误的话,会弹窗告知远程服务器不可信,是否继续。
 
点击:“是”,输入用户名和密码,即可看到以下界面:
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage * Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch 269 packages can be updated.
25 updates are security updates. The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law. schips@ubuntu:~$
 
断开SSH登录有两种方法
Ctrl + D
输入logout
 
免密登录
配置免密登录的操作在客户端上面进行
假设我们有2台主机,当前登录的机器为192.168.1.100。
 
要登录的机器为192.168.1.101。
 
1.在当前的机子(100)上生成Keygen
ssh-keygen -t rsa
会有3次询问,一路回车即可
 
2.上传第一步公钥到服务器(101)
ssh-copy-id -i ~/.ssh/id_rsa.pub 远程用户名@远程IP

例如:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.101
 
完成。
 
 
scp 跨级远程拷贝
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。两台主机之间复制文件必需得同时有两台主机的复制执行帐号和操作权限。
比较适合在免密登录下拷贝
scp命令参数
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
scp一般有六种使用方法
本地复制远程文件:(把远程的文件复制到本地)
scp root@www.test.com:/val/test/test.tar.gz /val/test/test.tar.gz
远程复制本地文件:(把本地的文件复制到远程主机上)
scp /val/test.tar.gz root@www.test.com:/val/test.tar.gz
本地复制远程目录:(把远程的目录复制到本地)
scp -r root@www.test.com:/val/test/ /val/test/
远程复制本地目录:(把本地的目录复制到远程主机上)
scp -r ./ubuntu_env/ root@192.168.0.111:/home/pipi
pika:/media/pika/files/machine_learning/datasets$scp -r SocialNetworks/ piting@192.168.0.172:/media/data/pipi/datasets
本地复制远程文件到指定目录:(把远程的文件复制到本地)
scp root@www.test.com:/val/test/test.tar.gz /val/test/
远程复制本地文件到指定目录:(把本地的文件复制到远程主机上)
scp /val/test.tar.gz root@www.test.com:/val/
ps: scp复制文件时只指定服务器地址不加路径默认复制到哪里???
 
附录:SSH服务器常用配置设置
使用的命令:
sudo vi /etc/ssh/sshd_config
对应的修改项目
 
配置名
意义
备注
Port
使用的端口
可以通过添加多行以支持多个端口
Port 123
Port 456
ListenAddress 
监听的IP地址
 
Protocol
支持的SSH协议版本
Protocol 2,1 // 同时支持1,2
Protocol 2    // 使用SSH版本2
PermitRootLogin
是否允许root(建议no)
 
PermitEmptyPasswords
允许空密码登录(建议no)
 
PasswordAuthentication
允许使用密码配置(建议yes)
 
StrictModes
使用者的hot key改变以后否是仍然接受联机(默认yes)
 
PubkeyAuthentication
是否允许Public Key
仅针对 version 2
LoginGraceTime
多久时间没有连上的的断线时间
单位 m分钟 h小时,s秒(默认)
PrintLastLog
显示上一次登录的信息
Last login: Wed Mar 23 22:12:58 2016 from 192.168.1.100
 
关于Shell变量传递、防暴力破解等设置略。
变量传递指的是:将本地的环境变量(比如$1等)传递到ssh命令中进行执行(而不是使用远程SSH的环境变量)
 
防暴力破解主要使用的是    fail2ban 对网络环境进行设置

Ubuntu 开启SSH服务以及有关设置:安装,指定端口号、免密登录、远程拷贝的更多相关文章

  1. ubuntu开启SSH服务远程登录

    http://blog.csdn.net/jackghq/article/details/54974141 ubuntu开启SSH服务远程登录

  2. MongoDB官方下载安装设置配置文件指定端口号

    1.)下载 官网(https://www.mongodb.com/)右上角try free  进入下载中心,下载指定版本 ZIP和MSI随便 如果浏览器下载的慢,可以直接使用下载地址,然后迅雷下 操作 ...

  3. 如何在ubuntu开启ssh服务-使 SecureCRT远程登录

    不少人在第一次使用ubuntu系统的时候,用了很多种方法均没有办法开启SSH服务,ubuntu和其它的linux系统有所区别,因为在ubuntu下,service  sshd  restart  之类 ...

  4. 让ubuntu开启ssh服务以及让vi/vim正常使用方向键与退格键

    VIM 修复方法: 安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令.ubuntu预装的是vim tiny版本,而需要的是vim full版本.执行下面的语句安装vim f ...

  5. 【FATE】设置虚拟机固定IP以及免密登录

    一.前期准备 1.VMWare上新建三个Centos7的虚拟机 2.VMWare虚拟机的三种联网方式 1.桥接模式 -- 桥接: 默认使用VMnet0 这一种联网方式最简单,在局域网内,你的主机是怎么 ...

  6. ubuntu开启SSH服务

    SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-g ...

  7. [转] ubuntu开启SSH服务

    点击阅读原文 SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo ...

  8. Linux - Ubuntu开启SSH服务

    SSH分客户端openssh-client和openssh-server. 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt- ...

  9. ubuntu开启ssh服务时,报:start:Unknown job : ssh

    这里是参考网站资料,并记录下. 如图所示: 解决方法: 输入以下命令即可 /usr/sbin/sshd mkdir /var/run/sshd /usr/sbin/sshd netstat -nlt ...

随机推荐

  1. [CEOI2007] 树的匹配Treasury

    类型:树形 DP 传送门:>Here< 题意:给一棵树,你可以匹配有边相连的两个点,问你这棵树的最大匹配是多少,并且计算出有多少种最大匹配. 解题思路 首先树形Dp是很明显的,$f[i][ ...

  2. 【XSY2720】区间第k小 整体二分 可持久化线段树

    题目描述 给你你个序列,每次求区间第\(k\)小的数. 本题中,如果一个数在询问区间中出现了超过\(w\)次,那么就把这个数视为\(n\). 强制在线. \(n\leq 100000,a_i<n ...

  3. ios-deploy was not found

    Ionic 打包ios的时候,突然报错,提示如下: (node:1157) UnhandledPromiseRejectionWarning: ios-deploy was not found. Pl ...

  4. rar自动压缩备份

    rem ******MySQL backup start********@echo offforfiles /p "D:\备份\发布软件备份" /m backup_*.sql -d ...

  5. CF868F Yet Another Minimization Problem 分治决策单调性优化DP

    题意: 给定一个序列,你要将其分为k段,总的代价为每段的权值之和,求最小代价. 定义一段序列的权值为$\sum_{i = 1}^{n}{\binom{cnt_{i}}{2}}$,其中$cnt_{i}$ ...

  6. 关于360插件化Replugin Activity动态修改父类的字节码操作

    近期在接入360插件化方案Replugin时,发现出现崩溃情况. 大概崩溃内容如下: aused by: java.lang.ClassNotFoundException: Didn't find c ...

  7. 20165223 week2学习查漏补缺

    标识符.字符集.关键字 基本数据类型 逻辑类型:boolean 常量:true.false 变量:boolean赋值 整数类型:byte.short.long.int 注意long型后缀L Java没 ...

  8. nodejs的某些api~(四)udp&dns

    今天记udp/数据报套接字和dns. udp UDP/数据报套接字 => require('dgram');dgram.createServer([type],[cb]);type:可以是'ud ...

  9. 如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

    unhide 是一个小巧的网络取证工具,能够发现那些借助 rootkit.LKM 及其它技术隐藏的进程和 TCP/UDP 端口.这个工具在 Linux.UNIX 类.MS-Windows 等操作系统下 ...

  10. 区间最深LCA

    求编号在区间[l, r]之间的两两lca的深度最大值. 例题. 解:口胡几种做法.前两种基于莫队,第三种是启发式合并 + 扫描线,第四种是lct + 线段树. ①: 有个结论就是这个答案一定是点集中D ...