下面来讲解如何在 Linux 服务器上制作密钥对,将公钥添加给账户,设置 SSH,最后通过客户端登录。
1. 制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
[root@host ~]$ ssh-keygen <==建立密钥对 #或生成pem:ssh-keygen -t rsa -f my.pem -C "your@email.com"Generatingpublic/private rsa key pair.Enter file in which to save the key(/root/.ssh/id_rsa):<==按EnterCreated directory '/root/.ssh'.Enter passphrase (empty forno passphrase):<==输入密钥锁码,或直接按Enter留空Enter same passphrase again:<==再输入一遍密钥锁码Your identification has been saved in/root/.ssh/id_rsa.<==私钥Yourpublickey has been saved in/root/.ssh/id_rsa.pub.<==公钥Thekey fingerprint is:0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
对于KVM虚拟机,可以直接在创建虚拟机的时候勾上NAT,这时候就会自动为虚拟机分配一个虚拟的子网并且虚拟机可以通过nat连接到外部网络,基本上是开箱即用。同时也支持端口映射,具体可参考官方wiki下的QEMU port redirection。但之前在使用的过程中,发现这个端口映射并不是很稳定。同时虽然这种方法很简单,但是虚拟机之间是隔离的,无法互通数据,这样就非常不灵活。
同时,LXC虚拟机是没有这种开箱即用的NAT的。
这里我们可以看到有"The server could not connect to the client to verify the domain"的错误提示信息,包括也有其他提示错误,"The server experienced an internal error :: Error creating new registration"我们在邮局的时候不要用国内免费邮局。所以,如果我们是海外域名就直接先用域名自带的DNS。
最近把我的OVH独服重装了下,打算用Proxmox开点VM来用,省得一直吃灰(雾,安装很简单,毕竟是OVH提供的模板,但是,这玩意每次登陆都会有个蛋疼的提示(You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.),而且找了半天没找到有关的地方,然后去官网看了下订阅的价格,呵呵呵,我还是自己想办法吧……
SEO 即Search Engine Optimization,中文译名“搜索引擎优化”,通过对网站内部调整优化及站外优化,使网站满足搜索引擎收录排名需求,在搜索引擎中关键词排名提高,从而把精准用户带到网站,获得免费流量,产生直接销售或品牌推广。(通俗来讲:SEO即百度自然排名,一般所说的搜索引擎指综合搜索,除此外还有垂直搜索和站内搜索。)
// take order for table 1 and wait...
var order1 = orderBlocking(['Coke', 'Iced Tea']);
// once order is ready, take order back to table.
serveOrder(order1);
// once order is delivered, move on to another table.
// take order for table 2 and wait...
var order2 = orderBlocking(['Coke', 'Water']);
// once order is ready, take order back to table.
serveOrder(order2);
// once order is delivered, move on to another table.
// take order for table 3 and wait...
var order3 = orderBlocking(['Iced Tea', 'Water']);
// once order is ready, take order back to table.
serveOrder(order3);
// once order is delivered, move on to another table.
// take order for table 1 and move on...
orderNonBlocking(['Coke', 'Iced Tea'], function(drinks){
return serveOrder(drinks);
});
// take order for table 2 and move on...
orderNonBlocking(['Beer', 'Whiskey'], function(drinks){
return serveOrder(drinks);
});
// take order for table 3 and move on...
orderNonBlocking(['Hamburger', 'Pizza'], function(food){
return serveOrder(food);
});
if (typeof Object.create !== 'function') {
Object.create = function (o) {
var F = function {};
F.prototype = o;
return new F;
};
var otherPerson = Object.create(person);
// extract a core module like this
var http = require('http);
// extract a user defined module like this
var something = require('./folder1/folder2/folder3/something.js');