ssh 常用技巧
2024-10-21 09:10:37
连接中转
有时候你可能需要从一个服务器连接另外一个服务器,比如在两个服务器之间直接传输数据,而不用通过本地电脑中转:
www1 $ scp -pr templates www2:$PWD
(顺便说一下,当你需要在两台服务器间拷贝文件时,$PWD变量是非常有用的),因为即使你已经在两台服务器上添加了你本地电脑的公钥,scp默认仍然会提示你输入密码:这是因为你用来作为跳板的那台服务器上并没有你的私钥,所以,第二台服务器会拒绝你的公钥,但是一定不要通过将你的私钥拷贝到中转服务器上来解决这个问题,你可以使用agent forwarding来解决这个问题,只要在你的.ssh/config文件中加入下面这行代码就可以了:ForwardAgent yes或者是在Putty中勾上“Allow agent forwarding”选项,本地SSH就变成了第一台服务器的SSH代理,从第一台服务器在连接其它服务器就变和和在你本地一样简单,注意,如果要开启这个选项,前提是这个中间服务器值得你信任。
www1 $ scp -pr templates www2:$PWD
(顺便说一下,当你需要在两台服务器间拷贝文件时,$PWD变量是非常有用的),因为即使你已经在两台服务器上添加了你本地电脑的公钥,scp默认仍然会提示你输入密码:这是因为你用来作为跳板的那台服务器上并没有你的私钥,所以,第二台服务器会拒绝你的公钥,但是一定不要通过将你的私钥拷贝到中转服务器上来解决这个问题,你可以使用agent forwarding来解决这个问题,只要在你的.ssh/config文件中加入下面这行代码就可以了:ForwardAgent yes或者是在Putty中勾上“Allow agent forwarding”选项,本地SSH就变成了第一台服务器的SSH代理,从第一台服务器在连接其它服务器就变和和在你本地一样简单,注意,如果要开启这个选项,前提是这个中间服务器值得你信任。
免密登录
如果觉得每次登录都需要填写密码,那么可以试试SSH Keys,首先使用OpenSSH为自己生成一对密钥:
$ ssh-keygen
跟随指示,完成之后,你应该可以在你的.ssh目录下看到两个文件,id_rsa就是你的私钥,而id_ras.pub则是你的公钥,现 在你需要将你的公钥拷贝到服务器上,如果你的系统有ssh-copy-id命令,拷贝会很简单:
$ ssh-copy-id
$ ssh-keygen
跟随指示,完成之后,你应该可以在你的.ssh目录下看到两个文件,id_rsa就是你的私钥,而id_ras.pub则是你的公钥,现 在你需要将你的公钥拷贝到服务器上,如果你的系统有ssh-copy-id命令,拷贝会很简单:
$ ssh-copy-id
否则,你需要手动将你的公钥拷贝到服务器上的~/.ssh/authorized_keys文件中:
$ < ~/.ssh/id_rsa.pub ssh ‘mkdir -p .ssh; cat >> .ssh/authorized_keys; chmod go-w .ssh .ssh/authorized_keys’
$ < ~/.ssh/id_rsa.pub ssh ‘mkdir -p .ssh; cat >> .ssh/authorized_keys; chmod go-w .ssh .ssh/authorized_keys’
别名
使用ssh 登录远程主机需要使用 $ ssh username@ip 的格式。每次登录都要输入这些东西很麻烦,所以我们可以给固定的 username@ip 取个别名在~/.ssh/config 文件中添加如下内容:
Host centos #别名
HostName 192.168.1.100 #远程主机ip
User root #欲登录的账户名
Port 22 #端口号,这个也可以不设置,默认22端口
这样的设置后 使用 $ ssh cnetos 等同于$ ssh -p 22 root@192.168.1.100
多条连接共享
如果你需要在多个窗口中打开到同一个服务器的连接(有的服务器自身最小化,不支持分屏显示),而不想每次都输入用户名,密码,或是等待连接建立,那么你可以配置SSH的连接共享选项,在本地打开你的SSH配置文件,通常它们位于~/.ssh/config,然后添加下面2行:
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
试试断开你与服务器的连接,并建立一条新连接,然后打开一个新窗口,再创建一条连接,你会发现,第二条连接几乎是在瞬间就建立好了。
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
试试断开你与服务器的连接,并建立一条新连接,然后打开一个新窗口,再创建一条连接,你会发现,第二条连接几乎是在瞬间就建立好了。
如果本身就做了做了免密,这个东西也就没用了。
最新文章
- Delphi XE6 原生解析json
- iOS 10 UserNotifications 使用说明
- Caffe 源碼閱讀(四) Layer.hpp Layer.cpp
- 运用requirejs的异步加载方式
- ubuntu网络设置
- 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)
- 泛型容器单元(Generics.Collections)[2]: TQueue<;T>; 队列列表
- poj 3154 Graveyard 贪心
- Java基础知识强化86:BigInteger类之BigInteger概述和构造方法
- xib添加手势后报错:-[UITapGestureRecognizer setFrame:]: unrecognized selector sent to instance xxx
- [Android学习笔记]双缓冲绘图技术
- Swift 制作一个新闻通知中心插件1
- Java 内部类详解
- Android之View绘制流程源码分析
- 通过SQL创建一个有主键自动递增有默认值不为空有注释的表
- Android初级教程调用手机拍照与摄像功能
- Linux切换为超级用户的命令
- 用servlet打内容到网页上
- Codeforces 438E The Child and Binary Tree - 生成函数 - 多项式
- Docker 与 虚拟机比较
热门文章
- macos php安装扩展sqlsrv连接sqlserver
- websocket实现单聊
- Hdu 4778 Gems Fight! (状态压缩 + DP)
- _bzoj1911 [Apio2010]特别行动队【斜率优化dp】
- SpringMVC配置文件-web.xml的配置
- eclipse快捷键,移动和复制一段代码
- popoverController使用注意--转
- 【转载】(0, eval)(‘this’)
- Mysql读写分离操作之mysql-proxy
- AS 开发环境配置