type=page
status=published
title=update-node-ssh
next=update-password-alias.html
prev=update-node-ssh.html
~~~~~~
update-node-ssh
===============

[[update-node-ssh-1]][[GSRFM00256]][[update-node-ssh]]

update-node-ssh
---------------

updates the configuration data of a node

[[sthref2299]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] update-node-ssh [--help]
[--nodehost node-host]
[--installdir as-install-parent] [--nodedir node-dir] 
[--sshport ssh-port] [--sshuser ssh-user] 
[--sshkeyfile ssh-keyfile]
[--force={false|true}]
node-name
----

[[sthref2300]]

Description

The `update-node-ssh` subcommand updates the configuration data of a
node. This subcommand requires secure shell (SSH) to be configured on
the machine where the domain administration server (DAS) is running and
on the machine where the node resides. You may run this subcommand from
any machine that can contact the DAS.

This subcommand can update any node, regardless of whether the node is
enabled for remote communication. If the node is not enabled for remote
communication, the subcommand enables SSH communication for the node and
updates any other specified configuration data.

Options of this subcommand specify the new values of the node's
configuration data. The default for most options is to leave the
existing value unchanged. However, if this subcommand is run to enable
SSH communication for a node, default values are applied if any of the
following options is omitted:

* `--sshport`
* `--sshuser`
* `--sshkeyfile`

By default, the subcommand fails and the node is not updated if the DAS
cannot contact the node's host through SSH. To force the node to be
updated even if the host cannot be contacted through SSH, set the
`--force` option to `true`.

This subcommand is supported in remote mode only.

[[sthref2301]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--nodehost`::
  The name of the host that the node is to represent after the node is
  updated.
`--installdir`::
  The full path to the parent of the base installation directory of the
  \{product---name} software on the host, for example,
  `/export/glassfish3`.
`--nodedir`::
  The path to the directory that is to contain \{product---name}
  instances that are created on the node. If a relative path is
  specified, the path is relative to the as-install directory, where
  as-install is the base installation directory of the \{product---name}
  software on the host.
`--sshport`::
  The port to use for SSH connections to this node's host. The default
  depends on whether this subcommand is run to enable SSH communication
  for the node: +
  * If the node is already enabled for communication over SSH, the
  default is to leave the port unchanged.
  * If this subcommand is run to enable SSH communication for the node,
  the default port is 22. +
  If the `--nodehost` is set to `localhost`, the `--sshport` option is
  ignored.
`--sshuser`::
  The user on this node's host that is to run the process for connecting
  to the host through SSH. The default depends on whether this
  subcommand is run to enable SSH communication for the node: +
  * If the node is already enabled for communication over SSH, the
  default is to leave the user unchanged.
  * If this subcommand is run to enable SSH communication for the node,
  the default is the user that is running the DAS process. +
  If the `--nodehost` option is set to `localhost`, the `--sshuser`
  option is ignored.
`--sshkeyfile`::
  The absolute path to the SSH private key file for user that the
  `--sshuser` option specifies. This file is used for authentication to
  the `sshd` daemon on the node's host. +

[width="100%",cols="100%",]
|=======================================================================
a|
Note:

\{product---name} also supports password authentication through the
`AS_ADMIN_SSHPASSWORD` entry in the password file. The password file
is specified in the `--paswordfile` option of the
link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility.

|=======================================================================

  If the SSH private key file is protected by a passphrase, the password
  file must contain the `AS_ADMIN_SSHKEYPASSPHRASE` entry. +
  The path to the key file must be reachable by the DAS and the key file
  must be readable by the DAS. +
  The default depends on whether this subcommand is run to enable SSH
  communication for the node: +
  * If the node is already enabled for communication over SSH, the
  default is to leave the key file unchanged.
  * If this subcommand is run to enable SSH communication for the node,
  the default is the key file in the user's `.ssh` directory. If
  multiple key files are found, the subcommand uses the following order
  of preference:
  1.  `id_rsa`
  2.  `id_dsa`
  3.  `identity`
`--force`::
  Specifies whether the node is updated even if validation of the node's
  parameters fails. To validate a node's parameters, the DAS must be
  able to contact the node's host through SSH. Possible values are as
  follows: +
  `false`;;
    The node is not updated if validation of the node's parameters fails
    (default).
  `true`;;
    The node is updated even if validation of the node's parameters
    fails.

[[sthref2302]]

Operands

node-name::
  The name of the node to update. The node must exist. Otherwise, an
  error occurs.

[[sthref2303]]

Examples

[[GSRFM792]][[sthref2304]]

Example 1   Updating the Host That a Node Represents

This example updates the host that the node `lssh` represents to `sj04`.

[source,oac_no_warn]
----
asadmin> update-node-ssh --nodehost sj04 lssh
Command update-node-ssh executed successfully.
----

[[GSRFM793]][[sthref2305]]

Example 2   Forcing the Update of a Node

This example forces the update of the node `sj01` to enable the node to
communicate over SSH.

[source,oac_no_warn]
----
asadmin> update-node-ssh --force sj01
Warning: some parameters appear to be invalid.
Could not connect to host sj01 using SSH.
Could not authenticate. Tried authenticating with specified key at 
/home/gfuser/.ssh/id_rsa
Continuing with node update due to use of --force.
Command update-node-ssh executed successfully.
----

[[sthref2306]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref2307]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
link:install-node.html#install-node-1[`install-node`(1)],
link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]


