ssh的安装和使用

来源:互联网 发布:学编程开发怎样 编辑:程序博客网 时间:2024/05/21 10:27

ubuntu 14.04安装ssh

  • 更新源: 

    sudo apt-get update
  • 安装ssh服务:

    sudo apt-get install openssh-server
  • sudo ps -e | grep ssh”–>回车–>有sshd,说明ssh服务已经启动,
    如果没有启动,输入”sudo service ssh start”–>回车–>ssh服务就会启动

  • 使用gedit修改配置文件”/etc/ssh/sshd_config”
    打开”终端窗口”,输入”sudo gedit /etc/ssh/sshd_config”–>回车–>把配置文件中的”PermitRootLogin without-password”加一个”#”号,把它注释掉–>再增加一句”PermitRootLogin yes”–>保存,修改成功。
  • 连接:ssh user@host 离开:exit
  • SSH的默认端口是22,也就是说,你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

    $ ssh -p 2222 user@host

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

  • 将本地公钥复制到远程主机,就可以免密码登陆:

     ssh-keygen    # 生成本地公钥(id_rsa.pub)和私钥(id_rsa)(放在$HOME/.ssh/路径下)
  • 将本地公钥复制到远程主机

    ssh-copy-id user@host  

    远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。所以用以下命令也可以:

    ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
  • ssh远程数据和端口操作

    阮一峰:http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

scp的使用

在linux下一般用scp这个命令来通过ssh传输文件。

  • 从服务器上下载文件

    scp username@servername:/path/filename /var/www/local_dir(本地目录)

    例如:
    scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

  • 上传本地文件到服

    scp /path/filename username@servername:/path   

    例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

  • 从服务器下载整个目录
    scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

    例如:scp -r root@192.168.0.101:/var/www/test /var/www/

  • 上传目录到服务器

    scp  -r local_dir username@servername:remote_dir

    例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录
    注:目标服务器要开启写入权限。
    http://www.jyboke.com

“Write failed:Broken Pipe”的处理

  1. 解决方案:http://pswzyu.iteye.com/blog/1280718

    方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:

        ServerAliveInterval 60

    方法二:如果您有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:

        ClientAliveInterval 60

    方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令:

        $ ssh -o ServerAliveInterval=60 user@sshserver

2.具体操作

  • 服务器端

    服务器端, 可以让服务器发送“心跳”信号测试提醒客户端进行保持连接
    通过修改 sshd 的配置文件,能够让 SSH Server 发送“心跳”信号来维持持续连接,下面是设置的内容

    • 打开服务器 /etc/ssh/sshd_config,我在最后增加一行

      ClientAliveInterval 60ClientAliveCountMax 1

      这样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应,(注意:是服务器发心跳信号,不是客户端,这个有别于一些 FTP Client 发送的 KeepAlives 信号哦~~~),如果客户端没有回应,会记录下来直到记录数超过 ClientAliveCountMax 的值时,才会断开连接。

  • 客户端

    如果你没有服务器端管理权限, 在客户端进行设置也可以实现
    只要在/etc/ssh/ssh_config文件里加两个参数就行了

    TCPKeepAlive yesServerAliveInterval 300

    前一个参数是说要保持连接,后一个参数表示每过5分钟发一个数据包到服务器表示“我还活着”
    如果你没有root权限,修改或者创建~/.ssh/ssh_config也是可以的
    在这种方法中, 如果你只想针对某一个ssh连接进行持续, 你可以将上述配置文件复制一下进行修改然后在连接的时候使用 -F参数进行配置文件的指定。 当然因为只需要修改两个参数, 你也可以直接在连接命令中进行设定即:

    ssh -o TCPKeepAlive=yes -o ServerAliveInterval=300 pswzyu@nuihq.com -p 12345678

ubuntu 通过ssh连接阿里云ESC主机出现中文乱码

解决方案: 阿里云主机上默认没有安装中文语言包, 只要如下操作就可以了:

        sudo apt-get install language-pack-zh-hans   

参考: http://blog.csdn.net/cnylsy/article/details/52474433

原创粉丝点击