设置不输入密码ssh登录

在/etc/hosts文件下加入:

  192.168.1.60 u60 #设置u60为主机名

在每个节点上创建RSA秘钥:

# ssh-keygen -t rsa # 一直按确定键即可

# touch /root/.ssh/authorized_keys

先配置u60,这样u60就可以无密码访问u62和u63了:

u60# scp /root/.ssh/id_rsa.pub u62:/root/.ssh/id_rsa.pub_u60

u60# ssh u62 "cat /root/.ssh/id_rsa.pub_u60>> /root/.ssh/authorized_keys"

 面试题

 1) void GetMemory(char **p, int num)
   {
   *p = (char *)malloc(num);
  }
  void Test(void)
   {
   char *str = NULL;
   GetMemory(&str, 100);
   strcpy(str, "hello");
   printf(str);
  }
  请问运行Test 函数会有什么样的结果, 有没有问题?

2) void Test(void)
   {
      char *str = (char *) malloc(100);
      strcpy(str, “hello”);
      free(str);
      if(str != NULL)
       {
    strcpy(str, “world”);
    printf(str);
     }
  }
  请问运行Test 函数会有什么样的结果,有没有问题 ?
  
3)  char *GetMemory(void)
    {
   char p[] = "hello world";
   return p;
  }
  void Test(void)
   {
    char *str = NULL;
    str = GetMemory();
    printf(str);
  }

    请问运行Test 函数会有什么样的结果,有没有问题 ?

4)  双向链表的头指针为pStart, 尾指针为pEnd, 其中一个元素的指针为p, 将p删除,放到最后。
6) 编写strcat函数
  已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
  其中strDest 是目的字符串,strSrc 是源字符串。
7) 写一个单件CSingleton;
8) 给定两个字符串 s1 和s2, 要求判定s2是否能够通过s1做循环移位得到字符串包含。例如,给定s1 = aabcd和s2= cdaa,返回true,如果s1 == abcd 和s2 = acbd, 返回false.

 

NO1

void GetMemory(char *p)

{

       p=(char *)malloc(100);

}

void Test()

{

  char * str=NULL;

  GetMemory(str);

  strcpy(str,"Hello world");

  printf(str);

}

 

实质:GetMemory(str)在调用时会生成一个_str与str指向同一个数,这是因为C语言中函数传递形参不改变实参的内容,但是指针指向的内容是相同的,因此可以用指针控制数据。题中的GetMemory(str),实质是对_str的操作,并没有对str操作,函数结束后_str撤销,因此不会产生新的内存空间,str仍然是一个空指针。

 

NO2

char *GetMemory()

{

       char p[]="Hello World";

       return p;

}

void Test()

{

       char * str=NULL;

       str=GetMemory();

       printf(str);

}

实质:当一个函数调用结束后会释放内存空间,释放它所有变量所占用的空间,所以数组空间被释放掉了,也就是说str所指向的内容不确定是什么东西。但是返回的指针指向的地址是一定的。

 

NO3

char *GetMemory()

{

       Return “hello world”;

}

void Test()

{

       char * str=NULL;

       str=GetMemory();

       printf(str);

}

实质:本例打印hello world,因为返回常量区,而且并没有修改过。在上一个例子中不一定能打印hello world,因为指向的是栈区。

 

NO4

void GetMemory(char **p,int num)

{

       *p=(char *)malloc(num);

}

void Test()

{

       char * str=NULL;

       GetMemory(&str,100);

       strcpy(str,"Hello");

       printf(str);

}

可以正确的打印Hello但是内存泄露了,在GetMemory()中使用了malloc申请内存,但是在最后却没有对申请的内存做任何处理,因此可能导致内存的泄露,非常危险。

 

NO5

void Test()

{

       char *str=(char *)malloc(100);

       strcpy(str,"Hello");

       free(str);

       if (str!=NULL)

       {

              strcpy(str,"World");

              printf(str);

       }

}

申请空间,拷贝字符串,释放空间,前三步操作都没有问题,到了if语句里的判断条件开始出错了。因为一个指针被释放了之后其内容并不是NULL,而是一个不确定的值,所以if语句永远不能被执行,这也是著名的“野”指针问题。

 

NO6

void GetMemory(void)

{

       char *str=(char *)malloc(100);

       strcpy(str,"hello");

       free(str);

       if (str !=NULL)

       {

              strcpy(str,"world");

              printf(str);

       }

}

Str 为野指针,打印的结果不能确定。

 

 

 

时间: 2024-10-27 15:56:29

设置不输入密码ssh登录的相关文章

如何设置 Linux 上 SSH 登录的 Email 提醒

如何设置 Linux 上 SSH 登录的 Email 提醒 虚拟私有服务器 (VPS)上启用 SSH 服务使得该服务器暴露到互联网中,为黑客攻击提供了机会,尤其是当 VPS 还允许root 直接访问时.VPS 应该为每次 SSH 登录成功尝试配置一个自动的 email 警告. VPS 服务器的所有者会得到各种 SSH 服务器访问日志的通知,例如登录者.登录时间以及来源 IP 地址等信息.这是一个对于服务器拥有者来说,保护服务器避免未知登录尝试的重要安全关注点.这是因为如果黑客使用暴力破解方式通过

设置 Linux 上 SSH 登录的 Email 提醒

VPS)上启用 SSH 服务使得该服务器暴露到互联网中,为黑客攻击提供了机会,尤其是当 VPS 还允许root 直接访问时.VPS 应该为每次 SSH 登录成功尝试配置一个自动的 email 警告. VPS 服务器的所有者会得到各种 SSH 服务器访问日志的通知,例如登录者.登录时间以及来源 IP 地址等信息.这是一个对于服务器拥有者来说,保护服务器避免未知登录尝试的重要安全关注点.这是因为如果黑客使用暴力破解方式通过 SSH 来登录到你的 VPS 的话,后果很严重.在本文中,我会解释如何在 C

如何不输入密码ssh直接登录阿里云Linux主机

服务器环境:阿里云云服务器,Linux版本 - CentOS 客户端环境:Mac OSX Terminal 在Terminal中用ssh命令登录服务器每次都要输入密码,虽然可以复制/粘贴密码,但登录后一段时间不操作,服务器会自动断开连接,连接时又要复制/粘贴密码,还是有些不方便. 有没有办法实现登录时不用输入密码呢?有办法,这篇博文分享的就是解决方法. 不输入密码,服务器如何验证客户端呢?通过证书,证书就像你进办公室门时的门卡.客户端登录时,拿门卡(证书)在服务器上刷一下(证书验证),服务器会检

CentOS下Google Authenticator配置SSH登录动态验证码配置

说明: 1.一般ssh登录服务器,只需要输入账号和密码. 2.本教程的目的:在账号和密码之间再增加一个验证码,只有输入正确的验证码之后,再输入密码才能登录.这样就增强了ssh登录的安全性. 3.账号.验证码.密码三者缺一个都不能登录,即使账号和密码正确,验证码错误,同样登录失败. 4.验证码:是动态验证码,并且是通过手机客户端自动获取(默认每隔30秒失效一次). 5.最终目的:远程ssh登录一台服务器,需要正确的账号.密码.及一个可以获取到动态验证码的手机(目前支持Android和ios手机系统

ssh2-C#使用SSH登录后发指令出现乱码

问题描述 C#使用SSH登录后发指令出现乱码 我是C#中用SharpSSH的SSH2登录方式登录,登录成功后通过Telnet方式跳转到另外一台设备,通过一系列的权限登录后到达需要我发指令的地方后,发送指令出现乱码,之前都没出现乱码. 解决方案 编码问题. 一般windows是GB2312/GBK的,到Linux或其他设备,最有可能的是UTF-8. 我一般用putty的时候有个选项可以指定在服务器那边的编码是什么以便ssh工具可以显示正确的内容. 解决方案二: 编码问题.编码问题.编码问题.编码问

sshpass:一个很棒的免交互SSH登录工具

在大多数情况下,Linux 系统管理员使用 SSH 登录到程 Linux 服务器时,要么是通过密码,要么是无密码 SSH 登录或基于密钥的 SSH 身份验证. 如果你想自动在 SSH 登录提示符中提供密码和用户名怎么办?这时 sshpass 就可以帮到你了. sshpass 是一个简单.轻量级的命令行工具,通过它我们能够向命令提示符本身提供密码(非交互式密码验证),这样就可以通过 cron 调度器执行自动化的 shell 脚本进行备份. ssh 直接使用 TTY 访问,以确保密码是用户键盘输入的

java ssh linux-java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题

问题描述 java实现ssh登录远程Linux服务器并在该服务器上执行命令的问题 请教高手: 现在要使用java实现ssh登录远程Linux服务器并在该服务器上执行命令,获得执行命令的结果!由于采用的ssh登录方式是使用公钥密钥对的形式,不需要输入密码.所以如果正常的话可以直接执行,能很快得到结果. 但要是不小心出现问题,比如公钥密钥丢失等情况,就会需要输入密码,这时候程序就会一直停留在等待输入密码的那一步,无法继续执行下去. 现在假设发生了后面那种事情(需要输入密码,程序一直停留在等待密码),

Linux SSH登录慢案例分析

手头有台Linux服务器ssh登录时超级慢,需要几十秒.其它服务器均没有这个问题.平时登录操作都默默忍了.今天终于忍不住想搞清楚到底什么原因.搜索了一下发现了很多关于ssh登录慢的资料,于是自己也学着来分析.印证一下ssh登录慢的原因. 出现ssh登录慢一般有两个原因:DNS反向解析的问题和ssh的gssapi认证   1:ssh的gssapi认证问题 GSSAPI ( Generic Security Services Application Programming Interface) 是一

openstack ssh登录远程实例

问题描述 openstack ssh登录远程实例 各位大神们,本人刚接触openstack,有好多问题还是不明白,请求各位大神们帮忙.在此谢谢各位了! 问题就是:现在有两台机器:ip分别为192.168.8.175.192.168.8.147,其中192.168.8.175是controller+compute节点,192.168.8.147是一个compute节点,分给虚拟机的ip网段是203.0.113.0/24.现在在这两个节点上都可以创建虚拟机,在dashboard也可以看到,也可以通过