精华内容
下载资源
问答
  • ssh远程登录

    千次阅读 2017-05-18 22:57:23
    SSH远程登录

    1. 基本的用法

    SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

      $ ssh user@host
    

    如果本地用户名与远程用户名一致,登录时可以省略用户名。

      $ ssh host
    

    SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

      $ ssh -p 2222 user@host
    

    上面这条命令表示,ssh直接连接远程主机的2222端口。

    2. 口令登录

    如果你是第一次登录对方主机,系统会出现下面的提示:

      $ 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,保存一些对所有用户都可信赖的远程主机的公钥。

    3. 公钥登录 (免密码登录)

    使用密码登录,每次都必须输入密码,非常麻烦。好在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
    

    4. 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远程登录

    2016-06-04 14:41:05
    如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。 最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995...

    转载注明出处:点击打开链接


    什么是SSH?



    简单说,SSH是一种网络协议,用于计算机之间的加密登录。


    如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。


    最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。


    1. 首先在服务器上安装ssh的服务器端。
    $ sudo aptitude install openssh-server

    2. 启动ssh-server。
    $ /etc/init.d/ssh restart

    3. 确认ssh-server已经正常工作。
    $ netstat -tlp
    tcp6 0 0 *:ssh *:* LISTEN -
    看到上面这一行输出说明ssh-server已经在运行了。

    4. 在客户端通过ssh登录服务器。假设服务器的IP地址是192.168.0.103,登录的用户名是hyx。
    $ ssh -l hyx 192.168.0.103

    $ ssh -l hyx 192.168.0. 1   -p  22 

    $ ssh -l hyx 192.168.0.103
    接下来会提示输入密码,然后就能成功登录到服务器上了。

    OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击。此外,OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本。

    SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。下面是通过网络投票选出的25个最佳SSH命令,你必须牢记于心。

    (注:有些内容较长的命令,在本文中会显示为截断的状态。如果你需要阅读完整的命令,可以把整行复制到您的记事本当中阅读。)

    1、复制SSH密钥到目标主机,开启无密码SSH登录

    ssh-copy-id user@host

    如果还没有密钥,请使用ssh-keygen命令生成。

    2、从某主机的80端口开启到本地主机2001端口的隧道

    ssh -N -L2001:localhost:80 somemachine

    现在你可以直接在浏览器中输入http://localhost:2001访问这个网站。

    3、将你的麦克风输出到远程计算机的扬声器

    dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

    这样来自你麦克风端口的声音将在SSH目标计算机的扬声器端口输出,但遗憾的是,声音质量很差,你会听到很多嘶嘶声。

    4、比较远程和本地文件

    ssh user@host cat /path/to/remotefile | diff /path/to/localfile –

    在比较本地文件和远程文件是否有差异时这个命令很管用。

    5、通过SSH挂载目录/文件系统

    sshfs name@server:/path/to/folder /path/to/mount/point

    http://fuse.sourceforge.net/sshfs.html下载sshfs,它允许你跨网络安全挂载一个目录。

    6、通过中间主机建立SSH连接

    ssh -t reachable_host ssh unreachable_host

    Unreachable_host表示从本地网络无法直接访问的主机,但可以从reachable_host所在网络访问,这个命令通过到reachable_host的“隐藏”连接,创建起到unreachable_host的连接。

    7、将你的SSH公钥复制到远程主机,开启无密码登录 – 简单的方法

    ssh-copy-id username@hostname

    8、直接连接到只能通过主机B连接的主机A

    ssh -t hostA ssh hostB

    当然,你要能访问主机A才行。

    9、创建到目标主机的持久化连接

    ssh -MNf <user>@<host>

    在后台创建到目标主机的持久化连接,将这个命令和你~/.ssh/config中的配置结合使用:

    Host host ControlPath ~/.ssh/master-%r@%h:%p ControlMaster no

    所有到目标主机的SSH连接都将使用持久化SSH套接字,如果你使用SSH定期同步文件(使用rsync/sftp/cvs/svn),这个命令将非常有用,因为每次打开一个SSH连接时不会创建新的套接字。

    10、通过SSH连接屏幕

    ssh -t remote_host screen –r

    直接连接到远程屏幕会话(节省了无用的父bash进程)。

    11、端口检测(敲门)

    knock <host> 3000 4000 5000 && ssh -p <port> user@host && knock <host> 5000 4000 3000

    在一个端口上敲一下打开某个服务的端口(如SSH),再敲一下关闭该端口,需要先安装knockd,下面是一个配置文件示例。

    [options] logfile = /var/log/knockd.log [openSSH] sequence = 3000,4000,5000 seq_timeout = 5 command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 5000,4000,3000 seq_timeout = 5 command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp –dport 22 -j ACCEPT tcpflags = syn

    12、删除文本文件中的一行内容,有用的修复

    ssh-keygen -R <the_offending_host>

    在这种情况下,最好使用专业的工具。

    13、通过SSH运行复杂的远程shell命令

    ssh host -l user $(<cmd.txt)

    更具移植性的版本:

    ssh host -l user “`cat cmd.txt`”

    14、通过SSH将MySQL数据库复制到新服务器

    mysqldump –add-drop-table –extended-insert –force –log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost “mysql -uUSER -pPASS NEW_DB_NAME”

    通过压缩的SSH隧道Dump一个MySQL数据库,将其作为输入传递给mysql命令,我认为这是迁移数据库到新服务器最快最好的方法。

    15、删除文本文件中的一行,修复“SSH主机密钥更改”的警告

    sed -i 8d ~/.ssh/known_hosts

    16、从一台没有SSH-COPY-ID命令的主机将你的SSH公钥复制到服务器

    cat ~/.ssh/id_rsa.pub | ssh user@machine “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”

    如果你使用Mac OS X或其它没有ssh-copy-id命令的*nix变种,这个命令可以将你的公钥复制到远程主机,因此你照样可以实现无密码SSH登录。

    17、实时SSH网络吞吐量测试

    yes | pv | ssh $host “cat > /dev/null”

    通过SSH连接到主机,显示实时的传输速度,将所有传输数据指向/dev/null,需要先安装pv。

    如果是Debian:

    apt-get install pv

    如果是Fedora:

    yum install pv

    (可能需要启用额外的软件仓库)。

    18、如果建立一个可以重新连接的远程GNU screen

    ssh -t user@some.domain.com /usr/bin/screen –xRR

    人们总是喜欢在一个文本终端中打开许多shell,如果会话突然中断,或你按下了“Ctrl-a d”,远程主机上的shell不会受到丝毫影响,你可以重新连接,其它有用的screen命令有“Ctrl-a c”(打开新的shell)和“Ctrl-a a”(在shell之间来回切换),请访问http://aperiodic.net/screen/quick_reference阅读更多关于screen命令的快速参考。

    19、继续SCP大文件

    rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file

    它可以恢复失败的rsync命令,当你通过VPN传输大文件,如备份的数据库时这个命令非常有用,需要在两边的主机上安装rsync。

    rsync –partial –progress –rsh=ssh $file_source $user@$host:$destination_file local -> remote

    rsync –partial –progress –rsh=ssh $user@$host:$remote_file $destination_file remote -> local

    20、通过SSH W/ WIRESHARK分析流量

    ssh root@server.com ‘tshark -f “port !22″ -w -' | wireshark -k -i –

    使用tshark捕捉远程主机上的网络通信,通过SSH连接发送原始pcap数据,并在wireshark中显示,按下Ctrl+C将停止捕捉,但也会关闭wireshark窗口,可以传递一个“-c #”参数给tshark,让它只捕捉“#”指定的数据包类型,或通过命名管道重定向数据,而不是直接通过SSH传输给wireshark,我建议你过滤数据包,以节约带宽,tshark可以使用tcpdump替代:

    ssh root@example.com tcpdump -w – ‘port !22′ | wireshark -k -i –

    21、保持SSH会话永久打开

    autossh -M50000 -t server.example.com ‘screen -raAd mysession’

    打开一个SSH会话后,让其保持永久打开,对于使用笔记本电脑的用户,如果需要在Wi-Fi热点之间切换,可以保证切换后不会丢失连接。

    22、更稳定,更快,更强的SSH客户端

    ssh -4 -C -c blowfish-cbc

    强制使用IPv4,压缩数据流,使用Blowfish加密。

    23、使用cstream控制带宽

    tar -cj /backup | cstream -t 777k | ssh host ‘tar -xj -C /backup’

    使用bzip压缩文件夹,然后以777k bit/s速率向远程主机传输。Cstream还有更多的功能,请访问http://www.cons.org/cracauer/cstream.html#usage了解详情,例如:

    echo w00t, i’m 733+ | cstream -b1 -t2

    24、一步将SSH公钥传输到另一台机器

    ssh-keygen; ssh-copy-id user@host; ssh user@host

    这个命令组合允许你无密码SSH登录,注意,如果在本地机器的~/.ssh目录下已经有一个SSH密钥对,ssh-keygen命令生成的新密钥可能会覆盖它们,ssh-copy-id将密钥复制到远程主机,并追加到远程账号的~/.ssh/authorized_keys文件中,使用SSH连接时,如果你没有使用密钥口令,调用ssh user@host后不久就会显示远程shell。

    25、将标准输入(stdin)复制到你的X11缓冲区

    ssh user@host cat /path/to/some/file | xclip

    你是否使用scp将文件复制到工作用电脑上,以便复制其内容到电子邮件中?xclip可以帮到你,它可以将标准输入复制到X11缓冲区,你需要做的就是点击鼠标中键粘贴缓冲区中的内容。




    展开全文
  • SSH远程登录和SSH免密码登录

    万次阅读 多人点赞 2018-09-07 12:12:00
    SSH是一种通讯协议,...一、SSH远程登录的原理(基于口令) 1、客户端向服务器发送远程请求 如bigdata3登录到bigdata4: 2、服务器接收到请求后,将自己的主机的公钥发送给客户端,公钥用于加密 3、客户端将...

      SSH是一种通讯协议,可以实现远程安全登录。可以通过如putty、MobaXterm等工具通过ssh安全登录到虚拟机进行操作。
    Openssh:ssh远程安全登录的开源实现(软件)。
    一、SSH远程登录的原理(基于口令)
    1、客户端向服务器发送远程请求
    如bigdata3登录到bigdata4:
    这里写图片描述
    2、服务器接收到请求后,将自己的主机的公钥发送给客户端,公钥用于加密

    3、客户端将主机发送来的公钥通过hash算法得出主机公钥的公钥指纹,核对公钥指纹是否正确,以确认当前请求连接的的是我们想要登录的主机。
    在bigdata4上查看公钥:ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
    (我的主机用的是ssh的ECC 算法,通过ssh-keygen -t ecdsa生成密钥对。)
    bigdata4上的公钥和bigdata3请求时SHA256是一样的。
    这里写图片描述
    4、核对过公钥后,人机交互界面输入yes,客户端会将服务端的公钥保存在$HOME/.ssh/know_hosts文件中,可通过 cat ~/.ssh/know_hosts文件中查看保存在客户端的公钥。
    这里写图片描述
    5、客户端用服务端的公钥将密码进行加密并发送给服务端

    6、服务端接收到用自己公钥加密的客户端的密码,用在/etc/ssh下对应的私钥进行解密然后对比密码并返回登录结果,私钥用来解密。

    二、ssh的免密码登录(基于密钥)

      Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。为了支持无缝式工作,安装配置好ssh之后,可以是集群内机器的hdfs用户和yarn用户免密码登录。实现的最简单的方法是创建一个公钥/私钥对,存放到NFS中,让整个集群共享该密钥对。如果home目录并没有通过NFS共享,则需要利用ssh-copy-id等方法共享公钥。
    注意:免密登录也不是万能的。免密登录时值从一台主机A的用户userA,使用userB用户(B主机的一个用户)登录到主机B。存在着严格的对应关系:比如只能用bigdata1的root使用bigdata2的root用户登录到主机bigdata2:root@bigdata1 ====>root@bigdata2。
    实现步骤:
    1、在客户端生成一对密钥(公钥/私钥)
    基于空口令生成一个新的ssh密钥,以实现无密码登录:

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

    参数说明:
    -t 加密算法类型,这里是使用rsa算法
    -P 指定私钥的密码,不需要可以不指定
    -f 指定生成秘钥对保持的位置
    这里写图片描述
    2、将客户端公钥发送个服务端(其他客户端),使用ssh-copy-id

    ssh-copy-id root@bigdata2

    这里写图片描述
    注:经过ssh-copy-id后接收公钥的服务端会把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中
    这里写图片描述
    3、客户端请求(带有自己的用户名和主机名)

    4、服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端

    5、客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端

    6、服务端对比发送出去的和接收到的字符串是否相同,返回登录结果
    测试:登录成功
    这里写图片描述

    三、远程拷贝命令 scp
      scp工具,基于ssh远程安全登录的,可以将主机A上的文件或目录拷贝给主机B并且改名字,也可以将主机B上的文件或目录下载到主机A中,同时也支持修改文件名。

    1. 远程拷贝文件
      scp 本机文件 user@host:路径/
      注:将bigdata1上的/etc/profile文件拷贝到bigdata2的根目录下
      scp /etc/profile root@bigdata2:/
      注:将bigdata1上的/etc/profile文件拷贝到bigdata2的根目录下,并改名为profile.txt
      scp /etc/profile root@bigdata2:/profile.txt
    2. 远程拷贝目录
      scp -r 本机目录 user@host:路径/
      注:将bigdata1上的/bin目录拷贝到bigdata2的根目录下
      scp -r /bin root@bigdata1:/home/ (-r 表示递归)
    3. 下载文件到本地
      scp user@host:文件名 本地目录
      注:将bigdata2上的/profile下载到本地并改名为profile.txt
      scp root@bigdata2:/profile ./profile.txt
    4. 下载目录到本地
      scp -r user@host:文件名 本地目录
      注:将bigdata2上的/bin下载到本地并改名为bin.bak
      scp -r root@bigdata2:/home/bin ./bin.bak
    展开全文
  • Linux ssh远程登录

    千次阅读 2017-07-19 20:37:08
    Linux ssh命令 ssh远程登录 ssh讲解示例 ssh登录限制

    本文内容结构为:

    • ssh英文手册的主要部分翻译
    • ssh的实际用例以及连接限制配置

    原英文手册可在Linux命令行执行命令 man ssh

    名称

     ssh — OpenSSH SSH客户端(远程登陆程序)
     使用ssh -V命令可以得到版本号。需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH:
    
    $ ssh -V 
    OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
    
    下面的例子表明该系统正在使用SSH2:
    
    $ ssh -V 
    ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu 
    

    摘要

     ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
         [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile]
         [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport]
         [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
         [-Q cipher | cipher-auth | mac | kex | key]
         [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
         [-w local_tun[:remote_tun]] [user@]hostname [command]
    

    描述

     ssh (SSH客户端)是一个登陆远程机器并执行命令的程序,它是为了替代rlogin和rsh在两台互信主机之间的不安全网络中提供安全加密通信而设计出来的
    

    X11连接和任意tcp端口也能够在安全通道之间转发

     ssh连接并登陆特定主机(通过用户名).用户必须提供验证信息(取决于协议版本)去登陆主机  The
     如果命令被明确指出,那么它将被在远程主机中执行而不是登陆SHELL中
     登陆信息选项如下:
    
     -1      强制ssh使用协议版本1登陆
    
     -2      强制ssh只尝试用协议版本2登陆
    
     -4      强制ssh只使用ipv4登陆
    
     -6      强制ssh只使用ipv6登陆
    
     -A      允许认真代理的转发机制(也可以在每一个主机系统的配置文件中明确指出)。代理转发要小心使用
    

    在远程主机上有文件许可权限的用户(对于代理的UNIX-domain套接口)能够通过连接转发访问本地代理。攻击者能够通过代理获取密钥文件,而且攻击者能够在密钥下执行操作使得自己使用代理加载的认证信息进行验证

     -a      拒绝认证代理的连接
    
     -b bind_address
             在本地机器上使用绑定地址作为连接的源地址(只在拥有多个地址的系统中有效)
    
     -C      请求所有传输数据的压缩(包括标准输入、输出、错误输出、X11转发的数据和TCP连接)
    
     -c cipher_spec
             选择明确的密码加密会话
    
    
     -D [bind_address:]port
             明确指出一个本地的动态 应用级别端口转发
    
     -E log_file
             将debug日至附加到日志文件而不是显示到标准错误输出
    
     -e escape_char
             对使用pty的会话设置一个退出字符
    
     -F configfile
             指明可选用户的配置文件
    
     -f      在命令执行前请求ssh到后台执行
    
     -g      允许远程主机连接本地转发端口
    
     -I pkcs11
             指定ssh要用来通信的PKCS#11 token提供用户私有RSA密钥的PKCS#11分享库
    
     -i identity_file
             选择一个文件用来获取认证(私有密钥的)公钥
    
     -K     允许GSSAPI-based认证和为GSSAPI转发提供服务器证明
     -k     拒绝服务器的GSSAPI转发认证
    
     -L [bind_address:]port:host:hostport
             给需要连接的远程一侧主机指明本地机器上的给定转发端口
    
     -l login_name
             指明需要登陆远程主机的用户名称
    
     -M      为连接分享设置ssh客户端为master模式
    
     -N      不要执行远程命令(只对转发端口有效,针对第二个协议版本)
    
     -n      从/dev/null重定向标准输入
    
     -O ctl_cmd
             控制一个活跃的连接为多元主进程
    
     -o option
             以给定格式的参数使用配置文件
             选项与跟随的值如下
    
                   AddressFamily
                   BatchMode
                   BindAddress
                   CanonicalDomains
                   CanonicalizeFallbackLocal
                  ...
                   VerifyHostKeyDNS
                   VisualHostKey
                   XAuthLocation
    
     -p port
             指定连接远程主机的端口,也可以在配置文件中指明
    
     -Q cipher | cipher-auth | mac | kex | key
             查询ssh支持的算法(针对协议版本2)
    
     -R [bind_address:]port:host:hostport
             指明远程主机的给定转发端口和本地一侧的端口
    
    
     -S ctl_path
             指明连接分享的控制接口位置或者字符串“none”关闭连接分享
    
     -s      用来请求调用远程主机的子系统
    
     -T      关闭pseudo-tty分配
    
     -t      强制pseudo-tty分配开启
    
    
    
     -v      长模式
    
     -W host:port
             在客户端上请求标准输入输出通过安全通道转发到主机
    
     -w local_tun[:remote_tun]
             请求通道设备用指定的tun在客户端和主机之间转发
    
    
     -X      允许X11转发(可以在每一个客户端中的配置文件中指定)
    
     -x      拒绝X11转发
    
     -Y      开启信任的X11转发.
    
     -y      使用syslog(3)系统发送日志信息Send log information using the syslog(3) system module.  By default this
             information is sent to stderr.
    
     ssh能够从每一个用户的配置文件和系统侧配置文件获取额外配置信息.
    
     ssh 远程主机用户@远程主机ip -X   
     ##调用远程主机图形工具
     ssh  远程主机用户@远程主机ip command 
     ##直接在远程主机运行某条命令
    

    示例:

    注意:

    连接前请确认主机可达性和端口可用性
    

    1、 最简单的远程连接

    [root@foundation36 Desktop]# ssh root@172.25.254.x
        #执行连接命令
    root@172.25.254.x's password: 
        #需要输入所要连接的远程主机下指定用户的密码
    Last login: Wed Jul 19 15:03:27 2017 from 172.25.254.36
    ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1500447808
        #连接成功
    [root@foundationx ~]# ls
        #现在已经成功登陆,特征为[root@foundation36 Desktop]变为了[root@foundationx ~]
    anaconda-ks.cfg  foundation-config-post.log  rht-ks-post.log  rht-ks-pre.log
    [root@foundationx ~]# 
    

    2、临时回到本地主机

    输入退出符号:“~”与“Control-Z”组合。
    
    当你输入“~”你不会立即在屏幕上看到,当你按下<Control-Z>并且按回车之后才一起显示。如下,在远程主机中以此输入“~<Control-Z>”
    
    remotehost$ ~^Z 
    [1]+ Stopped ssh -l jsmith remotehost 
    localhost$
    

    3、回到了本地主机,ssh远程客户端会话就在UNIX后台中运行,你可以像下面那样查看它:

    localhost$ jobs 
    [1]+ Stopped ssh -l jsmith remotehost
    

    4、 你可以将后台运行的ssh会话进程切换到前台,重新回到远程主机,而无需输入密码

    localhost$ fg %1 
    ssh -l jsmith remotehost 
    remotehost$

    服务相关

    查看sshd服务状态:

    systemctl status sshd
    

    开启服务

    systemctl start sshd
    

    关闭服务

    systemctl stop sshd
    

    重启服务

    systemctl restart sshd
    

    ssh连接的高级配置

    sshkey加密

    1.生成公钥私钥

    root@ubuntu:~# ssh-keygen      ##生成公钥私钥工具,无需输入任何信息,一直回车直到命令结束
    

    这里写图片描述

    root@ubuntu:~# ls /root/.ssh/
    id_rsa  id_rsa.pub
    id_rsa      ##私钥,就是钥匙
    id_rsa.pub  ##公钥,就是锁
    

    2.添加key认证方式

    root@ubuntu:~# ssh-copy-id -i /root/.ssh/id_rsa.pub  root@172.25.0.11
    ssh-copy-id     ##添加key认证方式的工具
    -i          ##指定加密key文件
    /root/.ssh/id_rsa.pub   ##加密key
    root            ##加密用户为root
    172.25.0.11     ##被加密主机ip
    

    3.分发钥匙给client主机

    root@ubuntu:~# scp /root/.ssh/id_rsa root@172.25.0.10:/root/.ssh/
    

    4.提升openssh的安全级别
    通过修改openssh-server配置文件,我们可以设定更多的登录限制

    root@ubuntu:~# vim /etc/ssh/sshd_config
    

    可添加或者修改的常用设置有以下几条

        PasswordAuthentication yes|no
        ##是否开启用户密码认证,yes为支持no为关闭
    
        PermitRootLogin yes|no
        ##是否允许超级用户登陆
    
        AllowUsers student admin
        ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
    
        DenyUsers guest
        ##用户黑名单
    
        AllowGroups root halo
        ##允许属于root和halo组的用户可以登录
    
        Match参数的用法
        下例中public 组中的所有用户和以 test 开头的所有用户名都不能使用 TCP 转发:
    
    ## sshd_config file
    ## Global settings
    
    # Example (reflects default settings):
    #
    # Host *
    #   ForwardAgent no
    #   ForwardX11 no
    #   PubkeyAuthentication yes
    #   PasswordAuthentication yes
    #   FallBackToRsh no
    #   UseRsh no
    #   BatchMode no
    #   CheckHostIP yes
    #   StrictHostKeyChecking ask
    #   EscapeChar ~
    Match Group public
    AllowTcpForwarding no
    Match User test*
    AllowTcpForwarding no
    

    通过hosts文件设置sshd 允许/禁止 的主机连接

    vim /etc/hosts.deny
    #在文本最后添加以下内容,表示拒绝所有主机的sshd连接
    sshd:ALL
    
    
    vim /etc/hosts.allow
    #在文本最后添加以下内容,表示允许ssh连接的主机
    sshd:ip, ip, ip ,...
    
    
    sshd:ALL EXCEPT IP
    ##在上边两个文件中都可以以上面的方式设置除了某个主机之外其他主机拒绝或者允许ssh连接访问
    
    ##设置客户端ssh登陆后的提示信息,可以在这个文件中编写你想要在用户登录成功后显示的提示:
    vim /etc/motd
    

    用户登陆审记(可用来查看哪些主机登录过系统)

    w       ##查看使用系统的当前用户有那些
    w -f        ##-f查看使用地点
    
    
    last        ##查看用户登陆成功历史
    

    这里写图片描述

    lastb       ##查看用户登陆未成功历史
    

    这里写图片描述

    展开全文
  • ssh远程登录命令简单实例

    万次阅读 2018-08-08 09:40:53
    ssh远程登录命令简单实例   ssh命令用于远程登录上Linux主机。   常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh -h查看。   举例   不指定用户:   ssh 192.168.0.11...
  • 1.4树莓派SSH远程登录

    2020-05-02 10:25:16
    一.SSH远程登录 SSH:(我们的开发中一般使用此种方式远程登录) 由于树莓派只有一个串口,当我们开发中需要占用这个串口或者我们希望进行远程开发(通过一个根网线或无线连接到树莓派)可以借助Linux系统特有的...
  • Linux开启ssh 远程登录

    千次阅读 2020-07-04 10:47:07
    Linux开启ssh 远程登录 密码登录: 安装ssh apt-get install ssh 这个东西默认是没有装的 修改配置文件 vim /etc/ssh/sshd_config 重启配置服务 service sshd restart 其它 如果 service sshd restart 执行...
  • 配置SSH远程登录

    2017-12-20 14:46:07
    配置SSH远程登录 实验环境 QEMU虚拟机版本:1.0 Host操作系统:32位Ubuntu desktop 12.04.5 Guest虚拟机操作系统:32位的Ubuntu 9.04 为了方便Host与Guest间的文件交互,我采取SSH方式从Host机器远程登录Guest,...
  • SSH远程登录另一台linux

    万次阅读 2018-01-02 10:56:34
    ssh远程登录,ssh拷贝文件
  • Mac ssh远程登录Linux

    万次阅读 2016-04-27 01:59:34
    Mac ssh远程登录Linux
  • python实现ssh远程登录

    千次阅读 2018-12-16 22:33:18
    python实现ssh远程登录 #测试过程中,比较常用的操作就是将DUT(待测物)接入网络中,然后远程操控对DUT,使用SSH远程登陆到主机,然后执行相应的command即可 python 代码如下: # paramiko是用python语言写的一个模块...
  • 如何配置交换机SSH远程登录,本期我们就来了解下ssh远程登陆的方式,以锐捷交换机为例。如何配置锐捷SSH远程登陆?一、配置思路配置ssh远程登陆,一般是有四个步骤:1、首先选择Console方式登陆交换机2、开启交换机...
  • Mac 使用SSH远程登录服务器

    千次阅读 2019-05-07 00:06:03
    Mac 使用SSH远程登录服务器 开启mac的远程登录 可以通过mac自带的ssh工具远程登录云主机,首先需要确保mac允许使用远程登录,具体操作就是 系统偏好设置->共享->勾选远程登录,一般仅允许系统用户就可以了...
  • linux ssh远程登录被拒绝

    千次阅读 2019-06-25 19:49:19
    linux ssh远程登录被拒绝 首先检查端口是否开放,阿里云安全组检查,然后是防火墙查看22端口是否开启,如果都正常,可以关闭防火墙试试
  • 想要进行SSH远程登录,首先你得先有SSH(这是一个远程登录协议),没有这个协议是无法进行SSH远程登录的,所以我们得先下载安装SSH.** 1.在Ubuntu终端中输入 sudo apt-get update(更新呢源列表)然后输入密码等待更新...
  • 网络拓扑图 ... 实现客户端AR3 通过ssh远程登录到AR4 配置步骤: 配置个接口的IP地址 服务器端开启ssh协议 设置加密的秘钥 配置远程登录账户和密码 配置和开启vty线路 定义ssh的...
  • 树莓派开启root SSH远程登录

    千次阅读 2019-09-06 14:31:13
    2.以root用户登录,需要以用户pi登录,修改root密码,并开启root的ssh远程登录权限,具体步骤如下: 2.1.以用户pi登录 2.2.修改root登录密码,输入下面的命令,会提示输入新的密码 sudo passwd root 2.3.解锁root用户...
  • 一、root用户远程登录 1. 首先你得有个阿里云服务器(笑 2. 进入云服务器管理控制台 3. 在网络与安全栏下选择密钥对进入 4. 右上角创建密钥对,点击进入 5. 设置密钥对名称,点击确定,就会生成密钥对文件让你下载...
  • Linux SSH 远程登录讲解

    千次阅读 2013-09-15 10:22:53
    ssh命令是Linux下常用的远程登录...使用SSH远程登录主机,端口为22。用户为当前登录用户。 格式:ssh -p 格式:ssh -p 使用SSH远程登录主机,端口为。用户为当前登录用户。 格式:ssh -l 格式:ssh @ 使用SS
  • Mac 使用SSH远程登录

    万次阅读 2014-10-09 15:28:25
    Mac 使用SSH远程登录:Mac Terminal是自带SSH的,可以用whereis来看看。但是在现有进程中找不到ssh对应的进程,谷歌了一下,原因在于系统设置中没有打开远程登录。本文简单记录下使用ssh遇到的问题以及简单使用下ssh...
  • root用户 ssh远程登录 提示access denied

    千次阅读 2020-11-07 14:30:51
    ssh远程登录 提示Access denied,如下图所示: 需要修改SSH服务配置文件sshd_config来解决这个问题。文件路径为 /etc/ssh/sshd_config ,默认文件内容如下图: 图中红框内容修改为 PermitRootLogin yes,如下图所...
  • Python 自动化运维实现ssh 远程登录管理设备 案例
  • Linux修改SSH远程登录端口

    千次阅读 2015-02-09 21:51:54
    Linux修改SSH远程登录端口   1、修改SSH远程登录端口为1211   # vi/etc/ssh/sshd_config   Port 1211 #把’#Port 22’修改为’Port 1211’;   #AddressFamilyany   #ListenAddress0.0.0.
  • 这篇文章主要介绍了关于SSH远程登录和端口转发的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。 介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,529
精华内容 7,411
关键字:

ssh远程登录