背景:发现一个电信访问联通的接口很慢,于是查到是dns的问题,这时nslookup的作用就出来了。
/# nslookup -debug time.geekbang.org
第一步:
time curl "http://api.jackxiang.com/video/getUUID?client_id=100&format=json"
real 0m2.288s
user 0m0.001s
sys 0m0.001s
第二步:
tracert api.jackxiang.com
河南郑州到北京市北京市 鹏博士宽带的DNS查询很慢
估计是dns解析慢,于是直接访问IP试一试,发现很快。
nslookup api.jackxiang.com
[root@wh-appserver413 201512]# nslookup
> Set type=any
> api.jackxiang.com
Server: 115.182.119.202
Address: 115.182.119.20#53
Non-authoritative answer:
Name: api.jackxiang.com
Address: 115.182.9.212
根据DNS服务器的IP查是不是和服务器一样的是电信,发现不是(一个在河南省郑州市 联通骨干节点联通,一个在北京联通。):
您查询的IP:202.106.0.20
本站主数据:北京市北京市 联通
参考数据一:北京市 联通
网友提交的IP:北京市 联通DNS服务器
第三步:
[root@wh-appserver413 201512]# time curl -H"Host:api.jackxiang.com" "http://115.182.119.202/video/getUUID?client_id=100&format=json"
{"status":"success","data":{"uuid":"94a8a1d6-0668-429b-807c-81e12cd0ca08"}}
real 0m0.052s
user 0m0.000s
sys 0m0.003s
也就是说河南省郑州市 联通骨干节点联通到北京联通的DNS查询太慢引起的。
________________________________________________________________________
前面两行是您电脑所使用的DNS服务器名及其IP地址!
Web版本查询:http://tool.chinaz.com/nslookup/
$ nslookup
Default Server: ns.hazzptt.net.cn
Address: 202.102.224.68
查询域名解释服务器
> set type=ns
> yahoo.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
yahoo.com nameserver = NS2.DCA.yahoo.com
yahoo.com nameserver = NS5.DCX.yahoo.com
yahoo.com nameserver = NS.EUROPE.yahoo.com
yahoo.com nameserver = NS1.yahoo.com
Authoritative answers can be found from:
NS2.DCA.yahoo.com internet address = 209.143.200.34
NS5.DCX.yahoo.com internet address = 216.32.74.10
NS.EUROPE.yahoo.com internet address = 195.67.49.25
NS1.yahoo.com internet address = 204.71.200.33
查询邮件交换记录
>set type=mx
> 21cn.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
21cn.com MX preference = 10, mail exchanger = mta.21cn.com
mta.21cn.com internet address = 59.36.102.53
mta.21cn.com internet address = 59.36.102.54
mta.21cn.com internet address = 59.36.102.55
mta.21cn.com internet address = 59.36.102.56
mta.21cn.com internet address = 59.36.102.57
mta.21cn.com internet address = 59.36.102.58
mta.21cn.com internet address = 59.36.102.50
mta.21cn.com internet address = 59.36.102.51
mta.21cn.com internet address = 59.36.102.52
> gmail.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.googl.com
gmail.com MX preference = 10, mail exchanger = alt2.gmail-smtp-in.l.googl.com
gmail.com MX preference = 50, mail exchanger = gsmtp147.google.com
gmail.com MX preference = 50, mail exchanger = gsmtp183.google.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
alt2.gmail-smtp-in.l.google.com internet address = 216.239.59.27
gsmtp147.google.com internet address = 209.185.147.27
gsmtp183.google.com internet address = 64.233.183.27
gmail-smtp-in.l.google.com internet address = 209.85.143.114
gmail-smtp-in.l.google.com internet address = 209.85.143.27
alt1.gmail-smtp-in.l.google.com internet address = 64.233.185.27
alt1.gmail-smtp-in.l.google.com internet address = 64.233.185.114
>
以上例子就使用nslookup来查询yahoo.com这个zone的名字服务器,需要将类型设置为ns来执行查询,使用类型设置为mx查询你的邮件交换记录。用来帮助获得DNS数据的工具还有很多,如dig能迅速返回整个zone的名字解析数据,dnswalk可以用来帮助查询名字服务器的设置。这些工具都可以用来帮助查找DNS的设置问题。
2)查看域名对应的Dns命令:
3)修改访问域名的Dns服务器:
解释:
server dns_server_ip,表示将内定的 local DNS 换成另一部 server
/# nslookup -debug time.geekbang.org
第一步:
time curl "http://api.jackxiang.com/video/getUUID?client_id=100&format=json"
real 0m2.288s
user 0m0.001s
sys 0m0.001s
第二步:
tracert api.jackxiang.com
河南郑州到北京市北京市 鹏博士宽带的DNS查询很慢
估计是dns解析慢,于是直接访问IP试一试,发现很快。
nslookup api.jackxiang.com
[root@wh-appserver413 201512]# nslookup
> Set type=any
> api.jackxiang.com
Server: 115.182.119.202
Address: 115.182.119.20#53
Non-authoritative answer:
Name: api.jackxiang.com
Address: 115.182.9.212
根据DNS服务器的IP查是不是和服务器一样的是电信,发现不是(一个在河南省郑州市 联通骨干节点联通,一个在北京联通。):
您查询的IP:202.106.0.20
本站主数据:北京市北京市 联通
参考数据一:北京市 联通
网友提交的IP:北京市 联通DNS服务器
第三步:
[root@wh-appserver413 201512]# time curl -H"Host:api.jackxiang.com" "http://115.182.119.202/video/getUUID?client_id=100&format=json"
{"status":"success","data":{"uuid":"94a8a1d6-0668-429b-807c-81e12cd0ca08"}}
real 0m0.052s
user 0m0.000s
sys 0m0.003s
也就是说河南省郑州市 联通骨干节点联通到北京联通的DNS查询太慢引起的。
________________________________________________________________________
C:\Documents and Settings\jackxiang>nslookup xxy.qq.com
Server: gm-captiva.tencent.com
Address: 10.6.18.41
Non-authoritative answer:
Name: xxy.qq.com
Address: 119.147.78.140
Server: gm-captiva.tencent.com
Address: 10.6.18.41
Non-authoritative answer:
Name: xxy.qq.com
Address: 119.147.78.140
前面两行是您电脑所使用的DNS服务器名及其IP地址!
Web版本查询:http://tool.chinaz.com/nslookup/
$ nslookup
Default Server: ns.hazzptt.net.cn
Address: 202.102.224.68
查询域名解释服务器
> set type=ns
> yahoo.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
yahoo.com nameserver = NS2.DCA.yahoo.com
yahoo.com nameserver = NS5.DCX.yahoo.com
yahoo.com nameserver = NS.EUROPE.yahoo.com
yahoo.com nameserver = NS1.yahoo.com
Authoritative answers can be found from:
NS2.DCA.yahoo.com internet address = 209.143.200.34
NS5.DCX.yahoo.com internet address = 216.32.74.10
NS.EUROPE.yahoo.com internet address = 195.67.49.25
NS1.yahoo.com internet address = 204.71.200.33
查询邮件交换记录
>set type=mx
> 21cn.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
21cn.com MX preference = 10, mail exchanger = mta.21cn.com
mta.21cn.com internet address = 59.36.102.53
mta.21cn.com internet address = 59.36.102.54
mta.21cn.com internet address = 59.36.102.55
mta.21cn.com internet address = 59.36.102.56
mta.21cn.com internet address = 59.36.102.57
mta.21cn.com internet address = 59.36.102.58
mta.21cn.com internet address = 59.36.102.50
mta.21cn.com internet address = 59.36.102.51
mta.21cn.com internet address = 59.36.102.52
> gmail.com
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.googl.com
gmail.com MX preference = 10, mail exchanger = alt2.gmail-smtp-in.l.googl.com
gmail.com MX preference = 50, mail exchanger = gsmtp147.google.com
gmail.com MX preference = 50, mail exchanger = gsmtp183.google.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
alt2.gmail-smtp-in.l.google.com internet address = 216.239.59.27
gsmtp147.google.com internet address = 209.185.147.27
gsmtp183.google.com internet address = 64.233.183.27
gmail-smtp-in.l.google.com internet address = 209.85.143.114
gmail-smtp-in.l.google.com internet address = 209.85.143.27
alt1.gmail-smtp-in.l.google.com internet address = 64.233.185.27
alt1.gmail-smtp-in.l.google.com internet address = 64.233.185.114
>
以上例子就使用nslookup来查询yahoo.com这个zone的名字服务器,需要将类型设置为ns来执行查询,使用类型设置为mx查询你的邮件交换记录。用来帮助获得DNS数据的工具还有很多,如dig能迅速返回整个zone的名字解析数据,dnswalk可以用来帮助查询名字服务器的设置。这些工具都可以用来帮助查找DNS的设置问题。
2)查看域名对应的Dns命令:
3)修改访问域名的Dns服务器:
解释:
server dns_server_ip,表示将内定的 local DNS 换成另一部 server
301和302 Http状态有啥区别?
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved),
302 redirect: 302 代表暂时性转移(Temporarily Moved ),
当然 Http 状态 200 标示没有任何问题发生。
阅读全文
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved),
302 redirect: 302 代表暂时性转移(Temporarily Moved ),
当然 Http 状态 200 标示没有任何问题发生。
阅读全文
很多初学51单片机的网友会有这样的问题:AT89S51是什么?书上和网络教程上可都是8051,89C51等!没听说过有89S51 ?!
阅读全文
阅读全文
[实践OK]Linux下通过ssh-keygen生成公钥放~/.ssh下,使ssh不用输入密码,免密码登录, ssh-keygen的使用方法。
Unix/LinuxC技术 jackxiang 2010-3-2 11:22
用它在Alpine上生成各种级别的密钥,RSA、DSA和ECDSA三者的签名:
有些时候,我们在复制/移动文件到另一台机器时会用到scp,因为它比较安全。但如果每次
都要输入密码,就比较烦了,尤其是在script里。不过,ssh有另一种用密钥对来验证的方
式。下面写出我生成密匙对的过程,供大家参考。
关键点:
1)生成密钥的机器私钥不动,公钥给待连接的服务器。
2)公钥放到要待连接的机器上要改名为:authorized_keys。(mv id_rsa.pub authorized_keys)
3)权限得要是700:chmod -R 700 authorized_keys,在谁家就是chown 谁的权限,总之,在某人hime目录下面就只能某人读取即可,不需要其他人能读取或修改,一旦chown 后,755不必了,也是为了安全,# chmod 600 authorized_keys即可读取写入即可,记住:目录是700,里面的文件是600,也就是只能这个用户读取600,这个目录也是只能这个用户进入也就是目录得有x。
4)服务端:放谁的Home目录下在服务端执行命令时就是谁。
5)客户端:在客户端登录时如不指明用户,就是客户端的用户名,如:客户端是root用户,不指名则是root@xx.xx.xx.xx去连接。如果服务端也是放/root/.ssh/authorized_key下,刚好,如客户端不是root,是test,则直接ssh是肯定连接不上的,因为变成了:test@xx.xx.xx.xx。
6)同样,你客户client端连接时是xiangdong,但你生成密钥时是root(公钥匙放到待连接机的/home/xiangdong/.ssh/下。),此时也是对不上的,得以root环境(因为他要找当时生成密钥的私钥,你client本地换成了xiangodng,它没有了。)
7)所以,鉴于6这种情况,最好生成时的用户和待连接的用户一样(实践证明如果lvops用户设置后,如果root下执行ssh -llvops xx.xx.xx.xx 也是需要密码的,而su到lvops就能免密码登陆成功,这块ansible是可以的,因为如xiangdong的/home/.ansible.cfg自己设置了id_rsa文件路径,而root下用ssh -l这种方法并没有带上id_rsa的路径去登陆,所以还是需要密码的。private_key_file = /home/xiangdong/irdcops_private_key 前面文件来自后面拷贝:private_key_file = /home/lvops/.ssh/id_rsa ,这块儿如果是root操作注意把irdcops_private_key权限为xiangdong且能读取,否则ansible没法读取也就会需要密码或报错的问题。http://jackxiang.com/post/8967/),这样就会省去指定也好,用户名对不上,还得指定才行的这些小问题引发连接不上的问题。
第七点,也是实践证明了的,符合上面1-6点后,也就不用指明用户名了,如下:
[xiangdong@localhost .ssh]$ ssh 10.70.37.24
The authenticity of host '10.70.37.24 (10.70.37.24)' can't be established.
RSA key fingerprint is 56:94:6d:81:f3:e5:e2:8b:90:0a:93:3b:8e:7e:fd:c8.
Please type 'yes' or 'no': yes
Warning: Permanently added '10.70.37.24' (RSA) to the list of known hosts.
Last login: Thu May 5 17:27:03 2016 from 192.168.101.227
http://blog.csdn.net/kongqz/article/details/6338690
——————————————————生成步骤如下:——————————————————
第一步:生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"
[user1@rh user1]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com
[user1@rh user1]$
我的:
注意,我这儿:
这儿公用密钥:/root/.ssh2/id_rsa_2048_a.pub
私有密钥:/root/.ssh2/id_rsa_2048_a
生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。接着会提示输入一
个不同于你的password的密码,直接回车,让它空着。当然,也可以输入一个。(我比较懒
,不想每次都要输入密码。) 这样,密钥对就生成完了。
其中公共密钥保存在 ~/.ssh/id_rsa.pub =》 /root/.ssh2/id_rsa_2048_a.pub
私有密钥保存在 ~/.ssh/id_rsa =》/root/.ssh2/id_rsa_2048_a
然后改一下 .ssh 目录的权限,使用命令 "chmod 755 ~/.ssh" =》chmod 755 /root/.ssh2
[user1@rh user1]$ chmod 755 /root/.ssh
[user1@rh user1]$
之后把这个密钥对中的公共密钥复制到你要访问的机器上去(被以前需要密码访问的机器上),并保存为
~/.ssh/authorized_keys #My: mv id_rsa_2048_a.pub authorized_key
[user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys //特别注意:这个是在服务器端操作的
user1@rh1's password:
id_rsa.pub 100% 228 3.2MB/s 00:00
[user1@rh user1]$
之这样就大功告成了。之后你再用ssh scp sftp 之类的访问那台机器时,就不用输入密码
了,用在script上更是方便。
SSH服务的配置
1、配置SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。
2、因为SSH服务使用默认的配置已经能够很好的工作,如果仅仅提供SSH服务不需要修改。这里只介绍一
些常用的选项。
#Port 22
定义了SSH服务监听的断口号,SSH服务默认使用的端口号是22
#Proctocol 2,1
定义了SSH服务器使用SSH协议的顺序。默认识先使用SSH2协议,如果不成功则使用SSH1协议,为了安全起
见,可以设置只使用SSH2协议。
#ListenAddress 0.0.0.0
定义SSH服务器帮定的IP地址,默认绑定服务器所有可用的IP地址.
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
#PasswordAuthentication no
定义是否使用口令认证方式,如果准备使用公钥认证可以设置为no
# ps aux|grep ssh
root 2649 0.0 0.0 3360 840 ? Ss 2009 0:00 /usr/local/sbin/sshd -f /etc/ssh2/sshd2_config.l
vi /etc/ssh2/sshd2_config.l
即可!
四 :
吧 id_rsa ,拷到客户端,在服务器端吧id_rsa.pub 改名为authorized_keys
cat id_rsa.pub >> authorized_keys
注意:
ssh2的配置:
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
把 id_rsa ,拷到客户端,在服务器端吧id_rsa.pub 改名为authorized_keys
mv id_rsa_2048_a.pub authorized_key 这个是公钥重新命名。而客户端则是安装在自己的机器上这儿是:id_rsa_2048_a
别弄反了!
写在最后:
root
Jackxiang:/root/.ssh2 # scp ~/.ssh2/id_rsa_2048_a /root/.ssh2/authorized_keys21
scp: warning: stat: id_rsa_2048_a (src): no such file (server msg: 'syserr: No such file or directory, file: /home/admin/.ssh2/id_rsa_2048_a')
Tencent:/root/.ssh2 # whoami
root
admin:x:0:100::/home/admin:/bin/bash
Jackxiang:/root/.ssh2 # ls /home/admin
***
不是真正的root,是root这个组的,于是得拷贝到:
/home/admin/.ssh2/ 下,才行!
附送,方便一键ssh连接:
都三年前写的了,
今年2011加上个参考:http://chenlb.blogjava.net/archive/2008/07/03/212293.html
有些时候,我们在复制/移动文件到另一台机器时会用到scp,因为它比较安全。但如果每次
都要输入密码,就比较烦了,尤其是在script里。不过,ssh有另一种用密钥对来验证的方
式。下面写出我生成密匙对的过程,供大家参考。
关键点:
1)生成密钥的机器私钥不动,公钥给待连接的服务器。
2)公钥放到要待连接的机器上要改名为:authorized_keys。(mv id_rsa.pub authorized_keys)
3)权限得要是700:chmod -R 700 authorized_keys,在谁家就是chown 谁的权限,总之,在某人hime目录下面就只能某人读取即可,不需要其他人能读取或修改,一旦chown 后,755不必了,也是为了安全,# chmod 600 authorized_keys即可读取写入即可,记住:目录是700,里面的文件是600,也就是只能这个用户读取600,这个目录也是只能这个用户进入也就是目录得有x。
4)服务端:放谁的Home目录下在服务端执行命令时就是谁。
5)客户端:在客户端登录时如不指明用户,就是客户端的用户名,如:客户端是root用户,不指名则是root@xx.xx.xx.xx去连接。如果服务端也是放/root/.ssh/authorized_key下,刚好,如客户端不是root,是test,则直接ssh是肯定连接不上的,因为变成了:test@xx.xx.xx.xx。
6)同样,你客户client端连接时是xiangdong,但你生成密钥时是root(公钥匙放到待连接机的/home/xiangdong/.ssh/下。),此时也是对不上的,得以root环境(因为他要找当时生成密钥的私钥,你client本地换成了xiangodng,它没有了。)
7)所以,鉴于6这种情况,最好生成时的用户和待连接的用户一样(实践证明如果lvops用户设置后,如果root下执行ssh -llvops xx.xx.xx.xx 也是需要密码的,而su到lvops就能免密码登陆成功,这块ansible是可以的,因为如xiangdong的/home/.ansible.cfg自己设置了id_rsa文件路径,而root下用ssh -l这种方法并没有带上id_rsa的路径去登陆,所以还是需要密码的。private_key_file = /home/xiangdong/irdcops_private_key 前面文件来自后面拷贝:private_key_file = /home/lvops/.ssh/id_rsa ,这块儿如果是root操作注意把irdcops_private_key权限为xiangdong且能读取,否则ansible没法读取也就会需要密码或报错的问题。http://jackxiang.com/post/8967/),这样就会省去指定也好,用户名对不上,还得指定才行的这些小问题引发连接不上的问题。
第七点,也是实践证明了的,符合上面1-6点后,也就不用指明用户名了,如下:
[xiangdong@localhost .ssh]$ ssh 10.70.37.24
The authenticity of host '10.70.37.24 (10.70.37.24)' can't be established.
RSA key fingerprint is 56:94:6d:81:f3:e5:e2:8b:90:0a:93:3b:8e:7e:fd:c8.
Please type 'yes' or 'no': yes
Warning: Permanently added '10.70.37.24' (RSA) to the list of known hosts.
Last login: Thu May 5 17:27:03 2016 from 192.168.101.227
http://blog.csdn.net/kongqz/article/details/6338690
——————————————————生成步骤如下:——————————————————
第一步:生成密匙对,我用的是rsa的密钥。使用命令 "ssh-keygen -t rsa"
[user1@rh user1]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user1/.ssh/id_rsa):
Created directory '/home/user1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user1/.ssh/id_rsa.
Your public key has been saved in /home/user1/.ssh/id_rsa.pub.
The key fingerprint is:
e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com
[user1@rh user1]$
我的:
Jackxiang:/usr/local/tads/htdocs/xxy/src/view/images # ssh-keygen -t rsa
Generating 2048-bit rsa key pair
3 o.oOo.oOo.oO
Key generated.
2048-bit rsa, root@Tencent, Tue Mar 02 2010 11:26:08 +0800
Passphrase :
Again :
Key is stored with NULL passphrase.
(You can ignore the following warning if you are generating hostkeys.)
This is not recommended.
Don't do this unless you know what you're doing.
If file system protections fail (someone can access the keyfile),
or if the super-user is malicious, your key can be used without
the deciphering effort.
Private key saved to /root/.ssh2/id_rsa_2048_a
Public key saved to /root/.ssh2/id_rsa_2048_a.pub
Generating 2048-bit rsa key pair
3 o.oOo.oOo.oO
Key generated.
2048-bit rsa, root@Tencent, Tue Mar 02 2010 11:26:08 +0800
Passphrase :
Again :
Key is stored with NULL passphrase.
(You can ignore the following warning if you are generating hostkeys.)
This is not recommended.
Don't do this unless you know what you're doing.
If file system protections fail (someone can access the keyfile),
or if the super-user is malicious, your key can be used without
the deciphering effort.
Private key saved to /root/.ssh2/id_rsa_2048_a
Public key saved to /root/.ssh2/id_rsa_2048_a.pub
注意,我这儿:
这儿公用密钥:/root/.ssh2/id_rsa_2048_a.pub
私有密钥:/root/.ssh2/id_rsa_2048_a
生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。接着会提示输入一
个不同于你的password的密码,直接回车,让它空着。当然,也可以输入一个。(我比较懒
,不想每次都要输入密码。) 这样,密钥对就生成完了。
其中公共密钥保存在 ~/.ssh/id_rsa.pub =》 /root/.ssh2/id_rsa_2048_a.pub
私有密钥保存在 ~/.ssh/id_rsa =》/root/.ssh2/id_rsa_2048_a
然后改一下 .ssh 目录的权限,使用命令 "chmod 755 ~/.ssh" =》chmod 755 /root/.ssh2
[user1@rh user1]$ chmod 755 /root/.ssh
[user1@rh user1]$
之后把这个密钥对中的公共密钥复制到你要访问的机器上去(被以前需要密码访问的机器上),并保存为
~/.ssh/authorized_keys #My: mv id_rsa_2048_a.pub authorized_key
[user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys //特别注意:这个是在服务器端操作的
user1@rh1's password:
id_rsa.pub 100% 228 3.2MB/s 00:00
[user1@rh user1]$
之这样就大功告成了。之后你再用ssh scp sftp 之类的访问那台机器时,就不用输入密码
了,用在script上更是方便。
SSH服务的配置
1、配置SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。
2、因为SSH服务使用默认的配置已经能够很好的工作,如果仅仅提供SSH服务不需要修改。这里只介绍一
些常用的选项。
#Port 22
定义了SSH服务监听的断口号,SSH服务默认使用的端口号是22
#Proctocol 2,1
定义了SSH服务器使用SSH协议的顺序。默认识先使用SSH2协议,如果不成功则使用SSH1协议,为了安全起
见,可以设置只使用SSH2协议。
#ListenAddress 0.0.0.0
定义SSH服务器帮定的IP地址,默认绑定服务器所有可用的IP地址.
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
#PasswordAuthentication no
定义是否使用口令认证方式,如果准备使用公钥认证可以设置为no
# ps aux|grep ssh
root 2649 0.0 0.0 3360 840 ? Ss 2009 0:00 /usr/local/sbin/sshd -f /etc/ssh2/sshd2_config.l
vi /etc/ssh2/sshd2_config.l
即可!
四 :
吧 id_rsa ,拷到客户端,在服务器端吧id_rsa.pub 改名为authorized_keys
cat id_rsa.pub >> authorized_keys
注意:
ssh2的配置:
#PermitRootLogin yes
定义是否允许管理员登陆
#PermitEmptyPasswords no
定义是否允许空密码登陆.
把 id_rsa ,拷到客户端,在服务器端吧id_rsa.pub 改名为authorized_keys
mv id_rsa_2048_a.pub authorized_key 这个是公钥重新命名。而客户端则是安装在自己的机器上这儿是:id_rsa_2048_a
别弄反了!
写在最后:
root
Jackxiang:/root/.ssh2 # scp ~/.ssh2/id_rsa_2048_a /root/.ssh2/authorized_keys21
scp: warning: stat: id_rsa_2048_a (src): no such file (server msg: 'syserr: No such file or directory, file: /home/admin/.ssh2/id_rsa_2048_a')
Tencent:/root/.ssh2 # whoami
root
admin:x:0:100::/home/admin:/bin/bash
Jackxiang:/root/.ssh2 # ls /home/admin
***
不是真正的root,是root这个组的,于是得拷贝到:
/home/admin/.ssh2/ 下,才行!
附送,方便一键ssh连接:
# User specific aliases and functions
alias df='df -Th'
alias l='ls -CF'
alias la='ls -A'
alias les='less -S'
alias topme='top -u `whoami`'
alias s33='ssh -Yi ~/.ssh/33 192.168.8.33'
alias s34='ssh -Yi ~/.ssh/33 192.168.8.34'
alias s35='ssh -Yi ~/.ssh/33 192.168.8.35'
alias s32='ssh -Yi ~/.ssh/33 192.168.8.32'
alias f32='sftp -oIdentityFile=~/.ssh/33 192.168.8.32'
alias s15='ssh -Yi ~/.ssh/15 192.168.8.15'
alias s16='ssh -Yi ~/.ssh/15 192.168.8.16'
alias s17='ssh -Yi ~/.ssh/15 192.168.8.17'
alias f15='sftp -oIdentityFile=~/.ssh/15 192.168.8.15'
alias df='df -Th'
alias l='ls -CF'
alias la='ls -A'
alias les='less -S'
alias topme='top -u `whoami`'
alias s33='ssh -Yi ~/.ssh/33 192.168.8.33'
alias s34='ssh -Yi ~/.ssh/33 192.168.8.34'
alias s35='ssh -Yi ~/.ssh/33 192.168.8.35'
alias s32='ssh -Yi ~/.ssh/33 192.168.8.32'
alias f32='sftp -oIdentityFile=~/.ssh/33 192.168.8.32'
alias s15='ssh -Yi ~/.ssh/15 192.168.8.15'
alias s16='ssh -Yi ~/.ssh/15 192.168.8.16'
alias s17='ssh -Yi ~/.ssh/15 192.168.8.17'
alias f15='sftp -oIdentityFile=~/.ssh/15 192.168.8.15'
都三年前写的了,
今年2011加上个参考:http://chenlb.blogjava.net/archive/2008/07/03/212293.html
php结合具体应用的yaml配置实例如下
Php/Js/Shell/Go jackxiang 2010-3-1 15:02
actInit.yaml
225: { type: 225, total: 60, daylimit: { 2010-1-28: 20, 2010-1-29: 20, 2010-1-30: 20, 2010-2-01: 20 } }
226: { type: 226, total: 60, daylimit: { 2010-1-28: 20, 2010-1-29: 20, 2010-1-30: 20, 2010-2-01: 20 } }
226: { type: 226, total: 60, daylimit: { 2010-1-28: 20, 2010-1-29: 20, 2010-1-30: 20, 2010-2-01: 20 } }
yaml_prase.php
<?php
require_once "spyc.php";
$content = @file_get_contents("./actInit.yaml");
$yaml = Spyc::YAMLLoad($content);
print_r( $yaml );
?>
require_once "spyc.php";
$content = @file_get_contents("./actInit.yaml");
$yaml = Spyc::YAMLLoad($content);
print_r( $yaml );
?>
输出array的结果如下,符合多维数组的输出要求:
Array
(
[225] => Array
(
[type] => 225
[total] => 60
[daylimit] => Array
(
[2010-1-28] => 20
[2010-1-29] => 20
[2010-1-30] => 20
[2010-2-01] => 20
)
)
[226] => Array
(
[type] => 226
[total] => 60
[daylimit] => Array
(
[2010-1-28] => 20
[2010-1-29] => 20
[2010-1-30] => 20
[2010-2-01] => 20
)
)
)
<?php
require_once "spyc.php";
$content = @file_get_contents("./actInit.yaml");
$yaml = Spyc::YAMLLoad($content);
print_r( $yaml );
?>
require_once "spyc.php";
$content = @file_get_contents("./actInit.yaml");
$yaml = Spyc::YAMLLoad($content);
print_r( $yaml );
?>
house:
family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
Array
(
[house] => Array
(
[family] => Array
(
[name] => Doe
[parents] => Array
(
[0] => John
[1] => Jane
)
[children] => Array
(
[0] => Paul
[1] => Mark
[2] => Simone
)
)
[address] => Array
(
[number] => 34
[street] => Main Street
[city] => Nowheretown
[zipcode] => 12345
)
)
)
family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] }
address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
Array
(
[house] => Array
(
[family] => Array
(
[name] => Doe
[parents] => Array
(
[0] => John
[1] => Jane
)
[children] => Array
(
[0] => Paul
[1] => Mark
[2] => Simone
)
)
[address] => Array
(
[number] => 34
[street] => Main Street
[city] => Nowheretown
[zipcode] => 12345
)
)
)
阅读全文
http://blog.sina.com.cn/s/blog_4a654272010007d1.html阅读全文
PHP chr() 函数的一些在串口编程里面需要的备用
Php/Js/Shell/Go jackxiang 2010-2-28 23:37
来源:
http://www.w3school.com.cn/php/func_string_chr.asp
八进制为什么以0开头,十六进制为什么以0X开头?这个是计算机编程语言里面的约定。大部分计算机高级语言涉及到这里都是遵循一样的标准,以便于区分。
马上上手:
注释:ascii 参数可以是十进制、八进制或十六进制。通过前置 0 来规定八进制,通过前置 0x 来规定十六进制。
<?php
echo chr(52);//十进制没有什么开头
echo chr(052);//八进制以0开头
echo chr(0x52);//十六进制就以0x开头
?>输出:
4
*
R
为此,同样的52输出不同的结果字母,看是简单,还是仍然需要注意一下,偶尔会犯大错的,呵呵!
来源:http://www.39g.com/html/kaifa/262/2009/10/011415616641.htm阅读全文
<?php
$user = ""; //数据库用户名
$password = "";//数据库密码
$db_name = "i";//数据库名
$link = mysql_connect("localhost:3306",$user,$password);
mysql_select_db("$db_name",$link);
echo "<p>正在清空数据库,请稍等....<br>";
$result=mysql_query("SHOW tables",$link);
while ($currow=mysql_fetch_array($result)) {
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo $currow[0]."<br>";
}
echo "<br>恭喜你清理MYSQL成功<br>";
?>
$user = ""; //数据库用户名
$password = "";//数据库密码
$db_name = "i";//数据库名
$link = mysql_connect("localhost:3306",$user,$password);
mysql_select_db("$db_name",$link);
echo "<p>正在清空数据库,请稍等....<br>";
$result=mysql_query("SHOW tables",$link);
while ($currow=mysql_fetch_array($result)) {
mysql_query("drop TABLE IF EXISTS $currow[0]");
echo $currow[0]."<br>";
}
echo "<br>恭喜你清理MYSQL成功<br>";
?>
阅读全文
本机:windows XP
VM6:CentOS5.5
Step1:本机 ipconfig /all ,获得ip,子网掩码,网关和DNS。
Step2:填入CentOS5.5的network,如下图。
#IP要是整冲突了,我把你手剁了!!!
Step3:执行下面的命令
echo -e "nameserver 首选DNS\nnameserver 备用DNS" >> /etc/resolv.conf
如,
echo -e "nameserver *.*.*.*\nnameserver *.*.*.*" >> /etc/resolv.conf
Step4:ping baidu.com看是否能通讯
如果能,说明设置正确;如果不能,说明echo那条命令输入错误,比如 -e和后面的双引号之间要有一个空格。
如果命令输入错了,就执行下面的命令,覆盖一下,
echo -e "nameserver 202.106.0.20\nnameserver 203.196.0.6" > /etc/resolv.conf
现在只是临时能上网~~虚拟机重启后便不能了,还需要更改一个文件~
Step5:
ls /etc/sysconfig/network*
vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加,如下内容(三行),
IPADDR=*.*.*.*
NETMASK=*.*.*.*
GATEWAY=*.*.*.*
#数字自己填,你不会真的给我写上星星吧,当心你的手指头 _ _!
Step6:重启虚拟机,可以上网了!
VM6:CentOS5.5
Step1:本机 ipconfig /all ,获得ip,子网掩码,网关和DNS。
Step2:填入CentOS5.5的network,如下图。
#IP要是整冲突了,我把你手剁了!!!
Step3:执行下面的命令
echo -e "nameserver 首选DNS\nnameserver 备用DNS" >> /etc/resolv.conf
如,
echo -e "nameserver *.*.*.*\nnameserver *.*.*.*" >> /etc/resolv.conf
Step4:ping baidu.com看是否能通讯
如果能,说明设置正确;如果不能,说明echo那条命令输入错误,比如 -e和后面的双引号之间要有一个空格。
如果命令输入错了,就执行下面的命令,覆盖一下,
echo -e "nameserver 202.106.0.20\nnameserver 203.196.0.6" > /etc/resolv.conf
现在只是临时能上网~~虚拟机重启后便不能了,还需要更改一个文件~
Step5:
ls /etc/sysconfig/network*
vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加,如下内容(三行),
IPADDR=*.*.*.*
NETMASK=*.*.*.*
GATEWAY=*.*.*.*
#数字自己填,你不会真的给我写上星星吧,当心你的手指头 _ _!
Step6:重启虚拟机,可以上网了!
成功的人生,首先要找到做人做事的起点,我们可以把这个起点称之为“1”。这个“1”,包括经济意义上的“1”和社会意义上的“1”。经济意义上的“1”,就是俗称的“第一桶金”,是干干净净、结结实实的本钱。社会意义上的“1”,就是做人的本份、做人的良知和常识。经济意义上的“1”好找,找到以后还可以添上若干个“0”,积累巨大的财富。但是社会意义上的“1”很难守住,一旦守不住,就会丢掉本份,迷失本性,忘了自己是谁,忘了自己从哪里来,这就危险了。人是会随着财富的增长、身份的变化有所改变的,但有些常理、本份的东西永远不应改变。 阅读全文
众所周知,IT应用即是企业业务核心。如今,有90%的关键性业务处理是通过IT系统来完成的。在整体业务的背后,如果没有IT应用程序来驱动每个业务的进行,那你根本就不可能进行创建、下订单,送货,雇佣雇员或进行记账的任何一个行为了。因此,我们可以很清楚地看到IT应用和质量、性能对于业务交易是至关重要的。阅读全文
我想显示1到5的所有数字,以下代码可以
shell中循环取出文件中每一行赋予一变量的问题,試試:
阅读全文
#!/bin/sh
for i in 1 2 3 4 5
do
echo $i
done
那么我想显示1到100的数字呢。用for 循环该怎么写?for i in 1 2 3 4 5
do
echo $i
done
#!/bin/sh
for i in `seq 1 100`
do
echo $i
done
for i in `seq 1 100`
do
echo $i
done
shell中循环取出文件中每一行赋予一变量的问题,試試:
cat a.txt | while read aa
do echo $aa
done
do echo $aa
done
阅读全文
http://www.eb163.com/club/thread-1708-1-1.html