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 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
信息
简    称
SSH
作    用
提供安全性的协议
中文名
安全外壳协议
外文名
Secure Shell
ssh功能
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道" [1]  。
收起全文
精华内容
下载资源
问答
  • ssh用法及命令

    万次阅读 多人点赞 2016-08-21 22:15:43
    什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的...

    http://blog.csdn.net/pipisorry/article/details/52269785

    什么是SSH?

    简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
    SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。

    中间人攻击
    SSH之所以能够保证安全,原因在于它采用了公钥加密。
    整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
    这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
    可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

    ssh的安装

    SSH分客户端openssh-client和openssh-server

    如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。

    Ubuntu缺省已经安装了ssh client。

    #配置ssh#

    echo -e "\033[31;1m ******************************* \033[0m"
    echo -e "\033[31;1m ************安装和配置ssh************ \033[0m"
    sudo apt-get install -y openssh-server 1> /dev/null
    sudo sed -i 's/UsePAM no/UsePAM yes/g' /etc/ssh/sshd_config
    sudo sed -i '8a /etc/init.d/ssh start' /etc/profile
    sudo /etc/init.d/ssh start
    ps -e | grep ssh

    echo -e "\033[31;1m ssh授权 \033[0m"
    cd ~/.ssh/
    ssh-keygen -t rsa
    cat ./id_rsa.pub >> ./authorized_keys

     

    $ ps -e|grep ssh
     2151 ?        00:00:00 ssh-agent

     5313 ?        00:00:00 sshd

    ssh-agent表示ssh-client启动,sshd表示ssh-server启动了。

    如果缺少sshd,说明ssh服务没有启动或者没有安装。

    皮皮blog

     

     

    SSH基本用法

    SSH远程登录

    口令登录

    假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
          $ ssh user@host  如:ssh pika@192.168.0.111
    如果本地用户名与远程用户名一致,登录时可以省略用户名。
          $ ssh host
    SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。
          $ ssh -p 2222 user@host
    上面这条命令表示,ssh直接连接远程主机的2222端口。
    如果你是第一次登录对方主机,系统会出现下面的提示:
          $ ssh user@host
          The authenticity of host 'host (12.18.429.21)' can't be established.
          RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
          Are you sure you want to continue connecting (yes/no)?
    这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
    所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。
    很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。
    假定经过风险衡量以后,用户决定接受这个远程主机的公钥。
          Are you sure you want to continue connecting (yes/no)? yes
    系统会出现一句提示,表示host主机已经得到认可。
          Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.
    然后,会要求输入密码。
          Password: (enter password)
    如果密码正确,就可以登录了。
    当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
    每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

    公钥登录

    使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
    所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
    这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:
          $ ssh-keygen
    运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
    运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
    这时再输入下面的命令,将公钥传送到远程主机host上面:
          $ ssh-copy-id user@host
    好了,从此你再登录,就不需要输入密码了。
    如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。
          RSAAuthentication yes
          PubkeyAuthentication yes
          AuthorizedKeysFile .ssh/authorized_keys
    然后,重启远程主机的ssh服务。
          // ubuntu系统
          service ssh restart
          // debian系统
          /etc/init.d/ssh restart
    authorized_keys文件
    远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。
    这里不使用上面的ssh-copy-id命令,改用下面的命令,解释公钥的保存过程:
          $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
    这条命令由多个语句组成,依次分解开来看:(1)"$ ssh user@host",表示登录远程主机;(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令:(3)"$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创建一个;(4)'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到远程文件authorized_keys的末尾。
    写入authorized_keys文件后,公钥登录的设置就完成了。

    [SSH原理与运用(一):远程登录]

    使用ssh在远程后台不中断地跑程序

    Linux关闭ssh(关闭终端等)后运行的程序或者服务自动停止,如python3 a.py &。

    解决:使用nohup命令让程序在关闭窗口(切换SSH连接)的时候程序还能继续在后台运行。

    nohup python3 a.py &

    [linux进程管理与SELinux]

    ssh连接中断

    如果使用的是iTerm2,要让ssh不断线: profiles -> sessions -> When idel, send ASCII code

    其它命令行客户端,通过配置 ServerAliveInterval 来实现,在 ~/.ssh/config 中加入: ServerAliveInterval=30。表示ssh客户端每隔30秒给远程主机发送一个no-op包,no-op是无任何操作的意思,这样远程主机就不会关闭这个SSH会话。

    vim ~/.ssh/config,然后新增

    Host *
        ServerAliveInterval 60
    60秒就好了,而且基本去连的机器都保持,所以配置了*,如果有需要针对某个机器,可以自行配置为需要的serverHostName。

    [ssh保持连接不断开]

    皮皮blog

     

    SSH远程操作

    SSH数据传输

    SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。
          $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
    单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过SSH传向远程主机。
    这就是说,SSH可以在用户和远程主机之间,建立命令和数据的传输通道,因此很多事情都可以通过SSH来完成。
    下面看几个例子。
    【例1】
    将$HOME/src/目录下面的所有文件,复制到远程主机的$HOME/src/目录。
          $ cd && tar czv src | ssh user@host 'tar xz'
    【例2】
    将远程主机$HOME/src/目录下面的所有文件,复制到用户的当前目录。
          $ ssh user@host 'tar cz src' | tar xzv
    【例3】
    查看远程主机是否运行进程httpd。
          $ ssh user@host 'ps ax | grep [h]ttpd'

    lz建议使用scp进行远程copy:

    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复制文件时只指定服务器地址不加路径默认复制到哪里???

    [12个scp传输文件的命令栗子]

    [scp 跨机远程拷贝]

    SSH端口操作

    绑定本地端口

    既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性
    假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写:
          $ ssh -D 8080 user@host
    SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8080端口原来是一个不加密端口,现在将变成一个加密端口。

    本地端口转发

    有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而形成点对点的"端口转发"。为了区别后文的"远程端口转发",我们把这种情况称为"本地端口转发"(Local forwarding)。
    假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。
    我们在host1执行下面的命令:
          $ ssh -L 2121:host2:21 host3
    命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。
    这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口。
          $ ftp localhost:2121
    "本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。
    下面是一个比较有趣的例子。
          $ ssh -L 5900:localhost:5900 host3
    它表示将本机的5900端口绑定host3的5900端口(这里的localhost指的是host3,因为目标主机是相对host3而言的)。
    另一个例子是通过host3的端口转发,ssh登录host2。
          $ ssh -L 9001:host2:22 host3
    这时,只要ssh登录本机的9001端口,就相当于登录host2了。
          $ ssh -p 9001 localhost

    上面的-p参数表示指定登录端口。

    出错处理:ssh: Could not resolve hostname 192.168.*.*:***: Name or service not known

    解决:指定端口不能直接使用ip:端口号,使用-p参数来解决就可以了。

    远程端口转发

    既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发。
    还是接着看上面那个例子,host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。这时,"本地端口转发"就不能用了,怎么办?
    解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。
    我们在host3执行下面的命令:
          $ ssh -R 2121:host2:21 host1
    R参数也是接受三个值,分别是"远程主机端口:目标主机:目标主机端口"。这条命令的意思,就是让host1监听它自己的2121端口,然后将所有数据经由host3,转发到host2的21端口。由于对于host3来说,host1是远程主机,所以这种情况就被称为"远程端口绑定"。
    绑定之后,我们在host1就可以连接host2了:
          $ ftp localhost:2121
    这里必须指出,"远程端口转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。

    皮皮blog

     

    SSH的其他参数

    SSH还有一些别的参数,也值得介绍。
    N参数,表示只连接远程主机,不打开远程shell;T参数,表示不为这个连接分配TTY。这个两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作。
          $ ssh -NT -D 8080 host
    f参数,表示SSH连接成功后,转入后台运行。这样一来,你就可以在不中断SSH连接的情况下,在本地shell中执行其他操作。
          $ ssh -f -D 8080 host
    要关闭这个后台连接,就只有用kill命令去杀掉进程。

    [SSH原理与运用(二):远程操作与端口转发]

    皮皮blog

    from: http://blog.csdn.net/pipisorry/article/details/52269785

    ref: [Ubuntu环境下SSH的安装及使用]

    [25个必须记住的SSH命令]*

    [Linux 下 SSH 命令实例指南]*

    [数字签名是什么?]

    [  * SSH, The Secure Shell: The Definitive Guide: 2.4. Authentication by Cryptographic Key, O'reilly

      * SSH, The Secure Shell: The Definitive Guide: 9.2. Port Forwarding, O'reilly

      * Shebang: Tips for Remote Unix Work (SSH, screen, and VNC)

      * brihatch: SSH Host Key Protection

      * brihatch: SSH User Identities

      * IBM developerWorks: 实战 SSH 端口转发

      * Jianing YANG:ssh隧道技术简介

      * WikiBooks: Internet Technologies/SSH

      * Buddhika Chamith: SSH Tunneling Explained

    ]

     

    展开全文
  • SSH简介及两种远程登录的方法

    万次阅读 多人点赞 2018-09-23 13:58:58
    SSH的安全机制 SSH的安装 启动服务器的SSH服务 SSH两种级别的远程登录 SSH的高级应用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为...

    目录

    SSH的安全机制

    SSH的安装

    启动服务器的SSH服务

    SSH两种级别的远程登录

    SSH的高级应用


    Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。

    SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文主要介绍OpenSSH免费开源实现在Ubuntu中的应用,如果要在Windows中使用SSH,需要使用另一个软件PuTTY。

    SSH的安全机制

    SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。

    传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

    但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:

    第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。

    第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

    SSH的安装

    SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。

    dpkg -l | grep ssh

    如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),如果要开放本机的SSH服务就需要安装服务器。

    sudo apt-get install openssh-client 
    sudo apt-get install openssh-server 

    启动服务器的SSH服务

    首先确认ssh-server是否已经启动了

    ps -e | grep ssh

    如图,sshd 表示ssh-server已经启动了。如果没有启动,可以使用如下命令启动:

    sudo /etc/init.d/ssh start 

    停止和重启ssh服务的命令如下:

    sudo /etc/init.d/ssh stop  #server停止ssh服务 
    sudo /etc/init.d/ssh restart  #server重启ssh服务
    

    接下来就可以进行使用客户机远程登录服务器了~

    SSH两种级别的远程登录

    一、口令登录

    口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址  eg:

    ssh ldz@192.168.0.1

    如果需要调用图形界面程序可以使用 -X 选项

    ssh -X ldz@192.168.0.1

    如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。

    ssh 192.168.0.1

    还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如连接到服务器的1234端口:

    ssh -p 1234 ldz@192.168.0.1

    客户机必须要知道服务器的ip地址。可以在服务器端电脑上利用 ifconfig 命令查看该机的ip地址:

    如果是第一次登录远程主机,系统会给出下面提示:

    意思是,该远程主机的真实性无法确定,其公钥指纹为 SHA256:FFobshqrGOachj7Xp4LsJ9+xkNBlyyOe8ZIPl7K+qQI,确定想要继续连接吗?

    输入yes即可。这时系统会提示远程主机被添加到已知主机列表。

     

    然后会要求我们输入远程主机的密码,输入的密码正确就可以成功登录了。命令提示符会修改为远程主机的提示符,现在开始,终端中输入的命令都将在服务器中执行。

    我们可以通过 Ctrl+D 或者 exit 命令退出远程登录

     

    二、公钥登录

    每次登录远程主机都需要输入密码是很不方便的,如果想要省去这一步骤,可以利用密钥对进行连接,还可以提高安全性。

    1、在本机生成密钥对

    使用ssh-keygen命令生成密钥对:

    ssh-keygen -t rsa   #-t表示类型选项,这里采用rsa加密算法

    然后根据提示一步步的按enter键即可(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,这里看心情吧,如果不放心私钥的安全可以设置一下),执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa公钥文件 id_rsa.pub

    2、将公钥复制到远程主机中

    使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中

    ssh-copy-id ldz@192.168.0.1

    经过以上两个步骤,以后再登录这个远程主机就不用再输入密码了。

    cheers~

     

    SSH的高级应用

    使用远程主机不中断的跑程序

    当我们利用ssh在远程主机上跑程序的时候,只要关闭了终端就会中断ssh连接,然后远程主机上正在跑的程序或者服务就会自动停止运行。我们可以利用 nohup + 需要运行的程序 使运行的程序在切断ssh连接的时候仍然能够继续在远程主机中运行。nohup即no hang up(不挂起)。

    除此之外还有很多远程操作应用,包括 数据传输、端口操作(将不加密的网络连接绑定到ssh端口实现间接加密) 等等,可以参考柚子皮大神的博客:https://blog.csdn.net/pipisorry/article/details/52269785

     

     

     

    展开全文
  • 查看本机ssh公钥,生成公钥

    万次阅读 多人点赞 2017-08-01 23:32:17
    查看ssh公钥方法: 1.通过命令窗口 a.打开你的git bash 窗口 b.进入.ssh目录:cd ~/.ssh c.找到id_rsa.pub文件:ls d.查看公钥:cat id_rsa.pub 或者 vim id_rsa.pub 如图: 2.或者你也可以直接输入命令 ...
    查看ssh公钥方法:
      1.通过命令窗口
    a.打开你的git bash 窗口
                b.进入.ssh目录:cd ~/.ssh
    c.找到id_rsa.pub文件:ls
     
    d.查看公钥:cat id_rsa.pub    或者vim id_rsa.pub
    如图:
     
      2.或者你也可以直接输入命令 :cat ~/.ssh/id_rsa.pub
    如图:
     
     3.或者你也可以直接打开你用户(一般都是Administrator)下的.ssh文件夹,打开它里面的id_rsa.pub  文件,如图:
     
    何谓公钥:
    1.很多代码服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到代码服务器,你以后连接服务器拉取代码时就不用每次都输入用户名和密码了。
    2.很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓库管理员,让他给你添加到服务器上,你就可以通过ssh自由地拉取和提交代码了。
    3.如果是github、码云、coding、华为云开发者,你把公钥加到自己个人中心的SSH公钥列表里即可 
     
     
     生成公钥:
    1.如果通过上面的方式找不到公钥,你就需要先生成公钥了,命令:ssh-keygen
    2.接着会确认存放公钥的地址,默认就是上面说的路径,直接enter键确认
    3.接着会要求输入密码和确认密码,如果不想设置密码直接不输入内容 按enter键
    如图:
                            ----------------------该图来自网络,是linux系统,你装了git bash这些命令window也是适用的----------------------------
     
     
     
     
     
     
     
     
    展开全文
  • git生成并添加SSH key

    万次阅读 多人点赞 2017-11-30 23:24:57
    废话不多说,直接上操作: 1、安装Git Bash ... 2、鼠标右键git bash here 3、执行以下命令: ① cd ~/.ssh/ 【如果没有对应的文件夹,则执行 mkdir ./.ssh】 ② git config --globar user.name "xb1236

    废话不多说,直接上操作:

     

    1、安装Git Bash

    https://git-scm.com/downloads

     

    2、鼠标右键git bash here

     

    3、执行以下命令:

    ①   cd ~/.ssh/    【如果没有对应的文件夹,则执行  mkdir  ../.ssh】

    https://img-blog.csdnimg.cn/20200701211804952.png

     

    https://img-blog.csdnimg.cn/20200701211753503.png

    ②  git config --global user.name "xb12369"

    ③  git config --global user.email "1234@qq.com"

    ④  ssh-keygen -t rsa -C "1234@qq.com"

     

     

    4、找到C:\Users\xb12369\.ssh 目录,里面有两个文件:id_rsa和id_rsa.pub

     

    5、配置ssh【这里是id_rsa.pub里面的内容啊】

     

     

    配置好了后,你就可以愉快地commit && push

     

     

     

     

     

    系统被还原后遇到一个问题:在clone项目的时候一直在报:Clone failed: Failed to start Git process

     

    然后各种百度,最后发现,尼玛没有将idea和git进行关联,好尴尬啊~~

     

     

    然后问题得以解决~

     

    2017年12月27日 13:01:15

     

    展开全文
  • 什么是SSH 以及常见的ssh 功能

    万次阅读 多人点赞 2018-06-28 18:02:54
    什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候...
  • 免密ssh

    万次阅读 2019-10-29 16:58:15
    服务器ssh免密登陆: 1、在每台服务器上都执行ssh...[root@jw01 .ssh]# ssh-keygen -t rsa [root@jw02 .ssh]# ssh-keygen -t rsa [root@kt01 .ssh]# ssh-keygen -t rsa [root@kt02 .ssh]# ssh-keygen -t rsa 标题2...
  • linux安装ssh和开启 ssh服务

    万次阅读 多人点赞 2017-08-08 20:37:33
    1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。 如果...
  • ssh笔记

    万次阅读 2020-09-05 10:26:39
    【1】SSH 通过代理连接服务器 【2】win10 ssh连接服务器失败 【3】SSH 命令的三种代理功能(-L/-R/-D) 【1】SSH 通过代理连接服务器 命令行指定代理服务器 # 通过代理连接服务器 ssh -o ProxyCommand="nc -X ...
  • SSH远程登录和SSH免密码登录

    万次阅读 多人点赞 2018-09-07 12:12:00
    SSH是一种通讯协议,可以实现远程安全登录。可以通过如putty、MobaXterm等工具通过ssh安全登录到虚拟机进行操作。 Openssh:ssh远程安全登录的开源实现(软件)。 一、SSH远程登录的原理(基于口令) 1、客户端向...
  • ssh-copy-id三步实现SSH无密码登录和ssh常用命令

    万次阅读 多人点赞 2017-10-29 11:23:47
    ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 第一步:在本地机器上...
  • Linux初窥:Linux下SSH免密码登录配置

    万次阅读 多人点赞 2018-07-04 22:53:45
    目录 环境设置(root权限) 1.关闭防火墙和SELinux 2.设置主机名 ...假设有 A、 B 两台 Linux 服务器,我们希望能够从其中一台服务器通过 SSH 免密码登录到另一台服务器。 两台服务器的信息如...
  • 免密登陆是通过ssh登陆的,只是少了输入密码这一步,在接触免密要登陆前有必要了解 ssh ...连接服务器:家目录 .ssh known_hosts 里,未ssh连接过任何服务器所以里面是空白: 被连接服务器:/etc/sshssh_host_都...
  • git ssh key配置

    万次阅读 多人点赞 2018-01-10 18:48:16
    当使用git方式下载时,如果没有配置过ssh key,则会有如下错误提示: 下面就介绍一下如何配置git的ssh key,以便我们可以用git方式下载源码。 首先用如下命令(如未特别说明,所有命令均默认在Git Bash工具下...
  • SSH工具XShell连接谷歌云 root用户或普通用户

    万次阅读 多人点赞 2018-03-17 16:34:35
    目录 1.以root用户登入 2.普通用户,秘钥登入 3.启动shadowsocks失败 1.用root用户登入 ...1.3.修改SSH配置文件/etc/ssh/sshd_config vi /etc/ssh/sshd_config 修改PermitRootLogin和Password...
  • linux开启ssh服务,实现ssh远程登录

    万次阅读 多人点赞 2019-07-10 14:56:59
    1.查询是否安装SSH. rpm -pa |grep ssh 2.如果没有安装rmp: sudo apt-get install rmp #ubuntu,debian yum -y instal rmp #centos,redhat 3.安装SSH sudo apt-get install ssh or yum -y install open...
  • Linux 添加ssh公钥

    万次阅读 2018-07-27 09:36:43
    2.到A服务器输入命令ssh-keygen 一路回车 xubin@xubindeMBP:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/xubin/.ssh/id_rsa): /Users/xubin/.ssh/...
  • Webssh、浏览器使用ssh连接服务器

    万次阅读 2020-02-27 18:05:28
    python版本 python >=2.7 效果图: 代码传送门: https://github.com/1603565290m/webssh
  • 手机连接Linux系统 JuiceSSH - SSH Client(Android免费的SSH客户端) 最近迷上Linux远程连接,以前经常尝试各种方式连接Linux服务器,发现手机上解决方案,JuiceSSH特别棒,决定写一个教程。 配置账户 在使用...
  • Ubuntu安装后默认只有ssh客户端,即只能在Ubuntu内去连接其他ssh服务器,本文将详细介绍在Ubuntu下安装部署ssh服务端,以便实现其他客户端使用ssh协议远程登录Ubuntu服务器。环境Ubuntu Desktop amd64 18.04 ...
  • SSH1框架搭建实例

    千次下载 热门讨论 2013-04-25 09:57:11
    SSH1框架搭建实例(spring2+struts1+hibernate3)采用旧版本 以资源分销系统物料维护为原型做实例。包括物料的增删改查。包括登录界面。
  • HostName: 是目标主机的主机名,也就是平时我们使用ssh后面跟的地址名称。 Port:指定的端口号。 User:指定的登陆用户名。 IdentifyFile:指定的私钥地址。config 的配置记得配置HostdevzkndeMacBook-Pro:.ssh ...
  • ssh指定端口连接

    万次阅读 2019-09-11 10:22:57
    ssh 到指定端口 ssh -p xx user@ip xx 为 端口号 user为用户名 ip为要登陆的ip
  • SSH Config

    千次阅读 2020-04-11 13:07:26
    # To keep alive ssh Host * ControlPersist yes ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p ServerAliveInterval 30 Host git.xiaojukeji.com HostName git.xxx.com User ...
  • 解决SSH客户端中文乱码

    万次阅读 2018-01-06 23:37:20
    在window上使用SshClient经常出现乱码的问题,原因是因为SSH客户端的字符集跟window环境上的字符集不相同导致的。 解决方法: 1、首先,调出window的命令行界面,在顶部空白处右击,选择属性 2、查看当前...
  • GitHub教程 SSH keys配置

    万次阅读 多人点赞 2018-01-18 11:42:40
    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。 在管理Git项目上,有两种克隆到本地的方法。 直接使用https url克隆到本地 使用SSH ...
  • # Private 192.168.2.125 Host iPhone HostName 192.168.2.125 ...IdentityFile ~/.ssh/id_rsa_Theos125 # Private gitlab.v6h5. Host gitlab.v6h5.cn HostName gitlab.v6h5. User git IdentityFile ~
  • 如何生成ssh公钥(ssh-keygen)

    万次阅读 2019-02-21 18:00:39
    你可以按如下命令来生成 sshkey: ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... # 三次回车即可生成 ssh key 查看你的 public key,并把他添加到码云...
  • ssh配置文件和ssh命令

    千次阅读 2019-04-22 11:07:01
    ssh远程管理登录命令 ssh root@IP 以root用户登录IP这台主机 实验中,通过虚拟机中的centos7(作为客户端)去远程登录阿里云管理的主机(作为服务器端),因为ssh是利用非对称加密原理,所以第一次登录时需要从阿里...
  • ssh服务

    万次阅读 2018-05-27 08:03:03
    1. ssh介绍SSH为Secure Shell的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH是目前可靠的,专为远程登录会话和其他网络服务提供安全性的协议。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,435
精华内容 103,374
关键字:

ssh