<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://localhost:4000/OpenVMSBlog/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/OpenVMSBlog/" rel="alternate" type="text/html" /><updated>2026-06-19T13:02:05+02:00</updated><id>http://localhost:4000/OpenVMSBlog/feed.xml</id><title type="html">OpenVMS Blog</title><subtitle>This is a blog where I write about OpenVMS and related subjects.</subtitle><entry><title type="html">The Shell and Creating Users</title><link href="http://localhost:4000/OpenVMSBlog/dcl/" rel="alternate" type="text/html" title="The Shell and Creating Users" /><published>2026-06-13T01:00:00+02:00</published><updated>2026-06-13T01:00:00+02:00</updated><id>http://localhost:4000/OpenVMSBlog/DCLUsers</id><content type="html" xml:base="http://localhost:4000/OpenVMSBlog/dcl/"><![CDATA[<p><strong>Note that absolutely none of this is authoritative or directly based on relevant documentation. It’s mostly what I found and figured out and guessed and (in some cases) made up. Some of it may be wrong or dangerous or lead to disaster or confusion. I am not taking responsibility here for anything, not even spelling or good taste. Read and act on it at your own peril!</strong></p>

<p>OpenVMS 9.2 supports, as far as I can tell, three types of terminals:</p>

<ul>
  <li>Console with device name <strong>OPA0:</strong> which stands for <em>Operator Console A0</em></li>
  <li>Serial cable connections with devices names like <strong>TTA0:</strong> (<em>Teletype A0</em>)</li>
  <li>Secure shell connections like <strong>FTA0:</strong> (apparently <em>Fast Terminal A0</em>)</li>
</ul>

<p>X11 can also be used with ssh or XDM but OpenVMS terminal servers for GUI applications are exceedingly rare.</p>

<p>If ssh is configured (see <a href="../systeminstallation/">System Installation</a>), the terminal will be <strong>FTA0:</strong>. Further ssh connections will be <strong>FTA1:</strong> and so on.</p>

<p>OpenVMS treats drives as devices in the same vain. The first hard drive is <strong>DKA0:</strong>.</p>

<p>OpenVMS uses a different shell than Unix and Windows and a different path delimiter. While Unix uses “/” and Windows uses “\”, OpenVMS uses a dot “.”.</p>

<p>Thus, while in Unix a user’s home directory could be located at</p>

<p><strong>/home/benoit/</strong></p>

<p>and in Windows his profile directory could be at</p>

<p><strong>C:\Users\benoit</strong></p>

<p>in OpenVMS the login directory could be</p>

<p><strong>DKA0:[USERS.BENOIT]</strong></p>

<p>Note that OpenVMS uses a device name like Windows uses a drive letter. Also note that since OpenVMS traditionally prefers upper-case over lower-case (but file and path names are case-preserving).</p>

<p>The OpenVMS shell is (typically) the <em>Digital Command Languages</em>, DCL. It is a rather old shell and was already used in OpenVMS’ predecessors in the early 1970s. It has some surprisingly modern features and follows many surprisingly ancient rituals.</p>

<p>It is customary to document shell commands in all upper-case. Like in Windows PowerShell, shell commands can be abbreviated but in scripts should be written out.</p>

<p>Let’s start a session as the system user.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">Welcome to OpenVMS (TM) x86_64 Operating System, Version V9.2-3

    Last interactive login on Saturday, 13-JUN-2026 16:23:10.87
    Last non-interactive login on Wednesday, 17-NOV-1858 00:00:00.00
$
VBVMS2::SYSTEM 16:33:15   (DCL)   CPU=00:00:00.04 PF=307 IO=88 MEM=264
$</code></pre></figure>

<p>I don’t know why system’s last non-interactive login was in the mid-1800s.</p>

<p>The information line <strong>VBVMS2::SYSTEM 16:33:15   (DCL)   CPU=00:00:00.04 PF=307 IO=88 MEM=264</strong> appears when pressing <strong>ctrl+t</strong> (which is defined to send an ASCII 20 which is legally a “device control 4” command).</p>

<p>To find out more about the current terminal, use the SHOW TERMINAL command.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ show terminal
Terminal: _FTA3:      Device_Type: VT102         Owner: SYSTEM

   Input:    9600     LFfill:  0      Width: 252      Parity: None
   Output:   9600     CRfill:  0      Page:   84

Terminal Characteristics:
   Interactive        Echo               Type_ahead         No Escape
   Hostsync           TTsync             Lowercase          Tab
   Wrap               Scope              No Remote          No Eightbit
   Broadcast          No Readsync        No Form            Fulldup
   No Modem           No Local_echo      No Autobaud        No Hangup
   No Brdcstmbx       No DMA             No Altypeahd       Set_speed
   No Commsync        Line Editing       Insert editing     No Fallback
   No Dialup          Secure server      No Disconnect      No Pasthru
   No Syspassword     No SIXEL Graphics  No Soft Characters Printer port
   Numeric Keypad     ANSI_CRT           Regis              No Block_mode
   Advanced_video     Edit_mode          DEC_CRT            No DEC_CRT2
   No DEC_CRT3        No DEC_CRT4        No DEC_CRT5        No Ansi_Color
   VMS Style Input    &lt;CTRL-H&gt; Delete
$</code></pre></figure>

<p>Note that these settings are the result of this command run earlier: SET TERMINAL/INQUIRE/INSERT/BACKSPACE=DELETE which configured the terminal automatically plus set it into insert mode and defined the backspace key and a key that deletes characters.</p>

<p>The output also tells us that we are using terminal <strong>FTA3:</strong> and that the terminal type is <strong>VT102</strong> which is a Digital Equipment Corporation Video Terminal created in the 1970s, one of the most common terminal types also used by Unix and most text-based outputs of personal computers (I remember the Atari ST used VT52 which is a close relative).</p>

<p>OpenVMS know the concept of a “current directory” which is called the “default directory” (as in the directory which is targeted by default until changed). To show information about the shell’s process and default directory (and to resolve the directory names to disk locations), use the SHOW command. SHOW DEFAULT will likely give the same answer for the default directory as SHOW PROCESS.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ show process

13-JUN-2026 16:43:50.58   User: SYSTEM           Process ID:   0000042A
                          Node: VBVMS2           Process name: "SYSTEM"

Terminal:           FTA3:
User Identifier:    [SYSTEM]
Base priority:      4
Default file spec:  SYS$SYSROOT:[SYSEXE]
Number of Kthreads: 1 (System-wide limit: 2)

Devices allocated:  VBVMS2$FTA3:
$ show default
  SYS$SYSROOT:[SYSEXE]
  =   SYS$SYSROOT:[SYSEXE]
  =   SYS$COMMON:[SYSEXE]
$ show logical sys$sysroot
   "SYS$SYSROOT" = "VBVMS2$DKA0:[SYS0.]" (LNM$SYSTEM_TABLE)
        = "SYS$COMMON:"
1  "SYS$COMMON" = "VBVMS2$DKA0:[SYS0.SYSCOMMON.]" (LNM$SYSTEM_TABLE)
$</code></pre></figure>

<p>The SHOW LOGICAL command shows environment variables (called “logical names”) and where they have been defined. Environment variables (logical names) can be defined at process, job (process group), group (user group), system, and cluster level.</p>

<p>Besides logical names there are also “symbols” which are the rough equivalent of PowerShell aliases. To define an alias “cls” that does what “cls” does in cmd.exe, you can state this:</p>

<p><strong>CLS=”TYPE/PAGE NL0:”</strong></p>

<p>TYPE outputs a file, /PAGE is always the qualifier telling a command to output page by page and NL0: is a null device like $null in PowerShell. Note that DCL, like PowerShell, uses the same command-line qualifiers for every command. The effect of /PAGE is always caused by /PAGE.</p>

<p>But the system user really should not be typically used. We must create an account. System programs and scripts are stored in a directory with the logical name <strong>SYS$SYSTEM</strong>. The root directory of the drive is <strong>[000000]</strong> (for ancient reasons), and the script for creating user accounts is called <strong>ADDUSER.COM</strong> and I always forget where it is located. The pseudo-directory <strong>[…]</strong> represents all subdirectories. So to create a new user account, we need to find adduser.com and then assign rights and privileges to the user account. We will create an over-privileged superuser account because we are irresponsible idiots.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ set default dka0:[000000]
$ directory

Directory DKA0:[000000]

000000.DIR;1        ALPHA_TOOLS.DIR;1   BACKUP.SYS;1        BADBLK.SYS;1
BADLOG.SYS;1        BITMAP.SYS;1        CONTIN.SYS;1        CORIMG.SYS;1
GPT.SYS;1           INDEXF.SYS;1        SECURITY.SYS;1      SYS0.DIR;1
TCPIP$DHCP.DIR;1    VMS$COMMON.DIR;1    VOLSET.SYS;1

Total of 15 files.
$ directory [...]adduser.com

Directory DKA0:[SYS0.SYSCOMMON.SYSHLP.EXAMPLES]

ADDUSER.COM;1

Total of 1 file.

Directory DKA0:[VMS$COMMON.SYSHLP.EXAMPLES]

ADDUSER.COM;1

Total of 1 file.

Grand total of 2 directories, 2 files.
$ set default DKA0:[VMS$COMMON.SYSHLP.EXAMPLES]
$ directory *.com

Directory DKA0:[VMS$COMMON.SYSHLP.EXAMPLES]

ACMEUTIL.COM;1      ACMEUTIL_SETUP.COM;1                    ACME_EXAMPLE_DOI_BUILD.COM;1
ACME_PERSONA_BUILD.COM;1                ADDUSER.COM;1       BACKUSER.COM;1
CALC_SYSDISK_FREESPACE.COM;1            CLU_MOUNT_DISK.COM;1
CREATE_INFOSERVER_SERVICE.COM;1         DAYLIGHT_SAVINGS.COM;1
DECDTM$EXAMPLE1.COM;1                   DECDTM$EXAMPLE2.COM;1
ENHANCED_ERAPAT.COM;1                   EXAMPLE_F$GETDVI_2TB_DISK.COM;1
LAN$POPULATE.COM;1  LAT$RATING_BUILD.COM;1                  LAVC$BUILD.COM;1
LIB$TABLE_PARSE_DEMO.COM;1              LRDRIVER.COM;1      MGRMENU.COM;1
MONITOR.COM;1       MONSUM.COM;1        MSCPMOUNT.COM;1     MYTEST_LNK.COM;1
OLD_DAYLIGHT_SAVINGS.COM;1              OSIT$CMD_EXECUTOR.COM;1
PARTITIONS.COM;1    RAD.COM;1           RDB$SDA.COM;1       RESET_DEVICE_PROTECTION.COM;1
RESTUSER.COM;1      RMSJNL_EXAMPLE.COM;1                    SETUP_NCL_KEYPAD.COM;1
SPL.COM;1           SUBMON.COM;1        SYS$NET_SERVICES_EXAMPLE.COM;1
UWSS_LNK.COM;1      VMS$PASSWORD_POLICY_LNK.COM;1           WORKING_SET.COM;1
XTI_EXAMPLES.COM;1

Total of 40 files.</code></pre></figure>

<p>Run the script (called a “procedure” in OpenVMS):</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ @adduser
***************************************************************************
*  Creating a NEW user account... If at ANY TIME you need help about a    *
*  prompt, just type "?".                                                 *
***************************************************************************


Username(s) - separate by commas: benoit

 *** Processing BENOIT's account ***

Full name for BENOIT: Benoit Brisefer
Password (password is not echoed to terminal) [BENOIT]:

UIC Group number [200]:
UIC Member number: 1
Account name: benoit
Privileges [TMPMBX,NETMBX]:

Login directory [BENOIT]:
Login device [SYS$SYSDEVICE:]:

%CREATE-I-CREATED, SYS$SYSDEVICE:[BENOIT] created
%UAF-I-ADDMSG, user record successfully added
%UAF-I-RDBADDMSGU, identifier BENOIT value [000200,000001] added to rights database
%UAF-I-DONEMSG, system authorization file modified
%UAF-I-RDBDONEMSG, rights database modified

Check newly created account:


Username: BENOIT                           Owner:  BENOIT BRISEFER
Account:  BENOIT                           UIC:    [200,1] ([BENOIT])
CLI:      DCL                              Tables: DCLTABLES
Default:  SYS$SYSDEVICE:[BENOIT]
LGICMD:
Flags:
Primary days:   Mon Tue Wed Thu Fri
Secondary days:                     Sat Sun
No access restrictions
Expiration:            (none)    Pwdminimum: 15   Login Fails:     0
Pwdlifetime:         60 00:00    Pwdchange:      (pre-expired)
Last Login:            (none) (interactive),            (none) (non-interactive)
Maxjobs:         0  Fillm:       128  Bytlm:        128000
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0
Maxdetach:       0  BIOlm:       150  JTquota:        4096
Prclm:           8  DIOlm:       150  WSdef:          4096
Prio:            4  ASTlm:       300  WSquo:          8192
Queprio:         4  TQElm:       100  WSextent:      16384
CPU:        (none)  Enqlm:      4000  Pgflquo:      256000
Authorized Privileges:
  NETMBX       TMPMBX
Default Privileges:
  NETMBX       TMPMBX
%UAF-I-NOMODS, no modifications made to system authorization file
%UAF-I-RDBNOMODS, no modifications made to rights database

Is everything satisfactory with the account [YES]:</code></pre></figure>

<p>And then finally, change to the system directory and configure the new user account. Note that DCL and programs using DCL provide online help with the <strong>HELP</strong> command.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ set default sys$system
$ directory authorize.exe

Directory SYS$COMMON:[SYSEXE]

AUTHORIZE.EXE;1

Total of 1 file.
$ run authorize
UAF&gt; show benoit

Username: BENOIT                           Owner:  BENOIT BRISEFER
Account:  BENOIT                           UIC:    [200,1] ([BENOIT])
CLI:      DCL                              Tables: DCLTABLES
Default:  SYS$SYSDEVICE:[BENOIT]
LGICMD:
Flags:
Primary days:   Mon Tue Wed Thu Fri
Secondary days:                     Sat Sun
No access restrictions
Expiration:            (none)    Pwdminimum: 15   Login Fails:     0
Pwdlifetime:         60 00:00    Pwdchange:      (pre-expired)
Last Login:            (none) (interactive),            (none) (non-interactive)
Maxjobs:         0  Fillm:       128  Bytlm:        128000
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0
Maxdetach:       0  BIOlm:       150  JTquota:        4096
Prclm:           8  DIOlm:       150  WSdef:          4096
Prio:            4  ASTlm:       300  WSquo:          8192
Queprio:         4  TQElm:       100  WSextent:      16384
CPU:        (none)  Enqlm:      4000  Pgflquo:      256000
Authorized Privileges:
  NETMBX       TMPMBX
Default Privileges:
  NETMBX       TMPMBX
UAF&gt; modify benoit/nopwdexpired/nopwdlifetime/privileges=sysprv
%UAF-I-MDFYMSG, user record(s) updated
UAF&gt; show benoit

Username: BENOIT                           Owner:  BENOIT BRISEFER
Account:  BENOIT                           UIC:    [200,1] ([BENOIT])
CLI:      DCL                              Tables: DCLTABLES
Default:  SYS$SYSDEVICE:[BENOIT]
LGICMD:
Flags:
Primary days:   Mon Tue Wed Thu Fri
Secondary days:                     Sat Sun
No access restrictions
Expiration:            (none)    Pwdminimum: 15   Login Fails:     0
Pwdlifetime:           (none)    Pwdchange:  13-JUN-2026 17:28
Last Login:            (none) (interactive),            (none) (non-interactive)
Maxjobs:         0  Fillm:       128  Bytlm:        128000
Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0
Maxdetach:       0  BIOlm:       150  JTquota:        4096
Prclm:           8  DIOlm:       150  WSdef:          4096
Prio:            4  ASTlm:       300  WSquo:          8192
Queprio:         4  TQElm:       100  WSextent:      16384
CPU:        (none)  Enqlm:      4000  Pgflquo:      256000
Authorized Privileges:
  NETMBX       SYSPRV       TMPMBX
Default Privileges:
  NETMBX       TMPMBX
UAF&gt; exit
%UAF-I-DONEMSG, system authorization file modified
%UAF-I-RDBNOMODS, no modifications made to rights database
$</code></pre></figure>

<p>This configures user benoit (<strong>MODIFY benoit</strong>) not to have an expired password (<strong>/NOPWDEXPIRED</strong>), not to have a password lifetime (<strong>/NOPWDLIFETIME</strong>), and to have system privilege (<strong>/PRIVILEGES=SYSPRV</strong>). None of these are settings you should typically apply to a user account.</p>

<p>But in this case it a) makes it possible for the user to log on using ssh without having to set a new password, b) does not require the user to change the password regularly, and c) allows the user to act with system privilege. The latter is not a good thing and is akin (but not as devastatingly bad and inconvenient) as the <strong>Administrators</strong> group in Windows.</p>

<p>Logging on using the new user and trying a few commands…</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl"> Welcome to OpenVMS (TM) x86_64 Operating System, Version V9.2-3
benoit@vbvms2's password:

    Last interactive login on Wednesday, 17-NOV-1858 00:00:00.00
    Last non-interactive login on Wednesday, 17-NOV-1858 00:00:00.00
$ show default
  SYS$SYSDEVICE:[BENOIT]
$ directory
%DIRECT-W-NOFILES, no files found
$ create myfile.txt
I am a file.
 Exit
$
$ directory

Directory SYS$SYSDEVICE:[BENOIT]

MYFILE.TXT;1

Total of 1 file.
$ type myfile.txt
I am a file.
$ delete myfile.txt
%DELETE-E-DELVER, explicit version number or wild card required
$ delete myfile.txt;*
$</code></pre></figure>

<p>The “Exit” command after <strong>CREATE myfile.txt</strong> was caused by pressing ctrl+z (ASCII 26 “Substitute”).</p>

<p>The reason for <strong>%DELETE-E-DELVER, explicit version number or wild card required</strong> was that OpenVMS refuses to delete a file unless its version number is given (or “*” for all versions). On OpenVMS files are versioned, every change creates a new version of the file. A complete file path contains a device, a directory (and possibly subdirectories), a file name, a file type (file name extension), and a version number.</p>

<p><strong>DKA0:[BENOIT]MYFILE.TXT;1</strong></p>

<p>is version 1 of file “MYFILE” of the type “TXT” in te directory BENOIT on device DKA0:.</p>

<p>To wreck havoc with the system privilege it’s best to go to an important directory and start deleting files.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ set default sys$system
$ create havoc
%CREATE-E-OPENOUT, error opening SYS$SYSROOT:[SYSEXE]HAVOC.; as output
-RMS-E-PRV, insufficient privilege or file protection violation
$ show process

13-JUN-2026 17:42:24.06   User: BENOIT           Process ID:   0000042C
                          Node: VBVMS2           Process name: "BENOIT"

Terminal:           FTA4:
User Identifier:    [BENOIT]
Base priority:      4
Default file spec:  SYS$SYSROOT:[SYSEXE]
Number of Kthreads: 1 (System-wide limit: 2)

Devices allocated:  VBVMS2$FTA4:
$ set process/privileges=sysprv
$ create havoc
Leeeeroy Jenkins!
 Exit
$ directory havoc*

Directory SYS$SYSROOT:[SYSEXE]

HAVOC.;1

Total of 1 file.
$ set process/privileges=nosysprv
$ delete havoc;*
%DELETE-W-FILNOTDEL, error deleting SYS$SYSROOT:[SYSEXE]HAVOC.;1
-RMS-E-PRV, insufficient privilege or file protection violation
$ set process/privileges=sysprv
$ delete havoc;*
$ directory havoc*
%DIRECT-W-NOFILES, no files found
$</code></pre></figure>

<p>Whenever you have abused privileges and deleted files in a system folder you should log off:</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ logoff
Connection to vbvms2 closed.</code></pre></figure>

<p>Next: TBD</p>]]></content><author><name></name></author><category term="installation" /><summary type="html"><![CDATA[Note that absolutely none of this is authoritative or directly based on relevant documentation. It’s mostly what I found and figured out and guessed and (in some cases) made up. Some of it may be wrong or dangerous or lead to disaster or confusion. I am not taking responsibility here for anything, not even spelling or good taste. Read and act on it at your own peril!]]></summary></entry><entry><title type="html">OpenVMS 9.2-3 System Installation</title><link href="http://localhost:4000/OpenVMSBlog/systeminstallation/" rel="alternate" type="text/html" title="OpenVMS 9.2-3 System Installation" /><published>2026-06-08T01:00:00+02:00</published><updated>2026-06-08T01:00:00+02:00</updated><id>http://localhost:4000/OpenVMSBlog/OpenVMSInstallation</id><content type="html" xml:base="http://localhost:4000/OpenVMSBlog/systeminstallation/"><![CDATA[<p><strong>Note that absolutely none of this is authoritative or directly based on relevant documentation. It’s mostly what I found and figured out and guessed and (in some cases) made up. Some of it may be wrong or dangerous or lead to disaster or confusion. I am not taking responsibility here for anything, not even spelling or good taste. Read and act on it at your own peril!</strong></p>

<p>OpenVMS, usually just called VMS, which stands for “Virtual Memory System” (because it was one of the first such), is an operasting system from the DEC family of operating systems. It shares this honour with Windows NT (which was created by the same team but 15 years later) and Amiga OS (which was based on an operating system originally written for the DEC PDP-11). It is very different from Unix and Linux but shows (obviously) some similarities to Windows NT (and Amiga OS, presumably).</p>

<p>To create a OpenVMS VM in VirtualBox, copy these settings:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/1vboxsystemsettings.png" alt="image" /></p>

<p><img src="http://netneurotic.net/pics/vmsinstall/2vboxnicsettings.png" alt="image" /></p>

<p>And the result can be a working OpenVMS Boot Manager:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/3vmsbootmanager.png" alt="image" /></p>

<p>By default OpenVMS uses serial console rather than video screens, but using the <strong>OPA0</strong> command, output can be redirected to the console. Then we boot the installer ISO (device name of <strong>DKA100</strong>).</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/4bootcommands.png" alt="image" /></p>

<p>This boots into the installer:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/5installer.png" alt="image" /></p>

<p>Usually the default answers are good, just make sure to initialize the new disk:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/6initialize.png" alt="image" /></p>

<p>OpenVMS device names are similar to Windows drive letters, except they are device names and not drive letters. <strong>DKA</strong> devices are some kind of storage drive. <strong>DKA0</strong> is the first such. <strong>DKA100</strong> is the optical drive,for some reason. We have seen <strong>OPA0</strong> as a video screen/console earlier.</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/7installer.png" alt="image" /></p>

<p>Choose a reasonable, easy-to-remember at least 15 characters password for your <strong>SYSTEM</strong> account, like <em>Lg9f80A5fVgDoX2</em>. The <strong>SYSTEM</strong> account is the equivalent of a Unix <strong>ROOT</strong> account. (Windows NT similarly has a <strong>SYSTEM</strong> account.) Name the node whatever you want.</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/8installer.png" alt="image" /></p>

<p>Select a timezone:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/9timezone.png" alt="image" /></p>

<p>Default settings are good for most of the rest:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/10tcpipssh.png" alt="image" /></p>

<p>Then wait for the installation to proceed:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/11descriptions.png" alt="image" /></p>

<p>Again, default settings:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/12installation.png" alt="image" /></p>

<p>And prepare for reboot.</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/13installationdone.png" alt="image" /></p>

<p>Reboot:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/14firstboot.png" alt="image" /></p>

<p>And finally, configure the boot manager to autostart the installed system:</p>

<p><img src="http://netneurotic.net/pics/vmsinstall/15autoboot.png" alt="image" /></p>

<p>Once rebooted, configure TCP/IP by running the procedure (batch file, script) <strong>tcpip$config.com</strong>.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ @tcpip$config</code></pre></figure>

<p>Batch files are invoked with “@” and the path to the file (with or without the suffix <strong>.com</strong>). This batch file is located in the <strong>SYSTEM</strong> user’s login directory.</p>

<p>It is somewhat self-explanatory:</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">        VSI TCP/IP Services for OpenVMS Configuration Menu

        Configuration options:

                 1  -  Core environment
                 2  -  Client components
                 3  -  Server components
                 4  -  Optional components

                 5  -  Shutdown VSI TCP/IP Services for OpenVMS
                 6  -  Startup VSI TCP/IP Services for OpenVMS
                 7  -  Run tests

                 A  -  Configure options 1 - 4
                [E] -  Exit configuration procedure

Enter configuration option:</code></pre></figure>

<p>After another reboot TCP/IP and ssh should be working:</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">PS C:\&gt; ssh vbvms2 -lsystem

 Welcome to OpenVMS (TM) x86_64 Operating System, Version V9.2-3
system@vbvms2's password:

$</code></pre></figure>

<p>First thing you want to do is configure the terminal and make that configuration stay:</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ set terminal/inquire
$ edit sylogin.com</code></pre></figure>

<p>In the editor, find this place and add these commands.</p>

<p>They will configure your terminal the way I like it and make ssh commands available.</p>

<p>Press <strong>F10</strong> or <strong>ctrl+z</strong> to save the file.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$!    =======  =================  ===========
$!     A D D    C O M M A N D S    B E L O W
$!    =======  =================  ===========
$
$ set terminal/inquire/insert/backspace=delete
$ @SSH$ROOT:[BIN]SSH$DEFINE_COMMANDS.COM
$
$!    =======  =================  ===========
$!     A D D    C O M M A N D S    A B O V E
$!    =======  =================  ===========</code></pre></figure>

<p>Create the ssh directory for the user’s ssh configuration. This is not <em>.ssh</em> as in Unix and Windows but <em>ssh</em>. (The “.” in OpenVMS is the path separator, like “/” in Unix and “\” in Windows.)</p>

<p>Press <strong>ctrl+z</strong> to save the text typed during file creation.</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ create/directory [.ssh]
$ set default [.ssh]
$ create authorized_keys
paste public keys here
 Exit
$ type authorized_keys.
paste public keys here
$</code></pre></figure>

<p>And log off:</p>

<figure class="highlight"><pre><code class="language-dcl" data-lang="dcl">$ logoff
Connection to vbvms2 closed.</code></pre></figure>

<p>Next: <a href="../dcl/">The Shell and Creating Users</a></p>]]></content><author><name></name></author><category term="installation" /><summary type="html"><![CDATA[Note that absolutely none of this is authoritative or directly based on relevant documentation. It’s mostly what I found and figured out and guessed and (in some cases) made up. Some of it may be wrong or dangerous or lead to disaster or confusion. I am not taking responsibility here for anything, not even spelling or good taste. Read and act on it at your own peril!]]></summary></entry><entry><title type="html">Blog General Info</title><link href="http://localhost:4000/OpenVMSBlog/generalinfo/" rel="alternate" type="text/html" title="Blog General Info" /><published>2026-05-15T01:00:00+02:00</published><updated>2026-05-15T01:00:00+02:00</updated><id>http://localhost:4000/OpenVMSBlog/OpenVMSBlogGeneralInfo</id><content type="html" xml:base="http://localhost:4000/OpenVMSBlog/generalinfo/"><![CDATA[<p>This is the first post to my new OpenVMS blog.</p>

<p>The blog will be mainly about the OpenVMS operating system.</p>

<p>This blog is part of my main web site at <a href="http://www.netneurotic.net">netneurotic.net</a> and is a sister blog to my <a href="http://www.netneurotic.net/WindowsBlog">Windows Blog</a>.</p>

<p>Next: <a href="../systeminstallation">system installation</a></p>]]></content><author><name></name></author><category term="Blog" /><summary type="html"><![CDATA[This is the first post to my new OpenVMS blog.]]></summary></entry></feed>